由于方法提供的json数据中有我不想要的东西,有没有方法在java里对json 进行修改 [ { "Name": "P1", "UID": 1, "Tasks": [ { "Name": "task1", "UID": "p1", "Start": "2007-01-03T00:00:00", "Finish": "2007-01-03T23:59:59", "PercentComplete": 0, "Duration": 86400, "ParentUID": 1, "_id": 1, "__Index": 0 }, { "Name": "task2", "UID": "p2", "Start": "2007-01-07T00:00:00", "Finish": "2007-01-09T23:59:59", "PercentComplete": 50, "Duration": 259200, "ParentUID": 1, "_id": 2, "__Index": 0 } ], "_id": 1, "_uid": 1, "_pid": -1, "_level": 0, "_height": 27 }, { "Name": "P4", "UID": 4, "Tasks": [], "_id": 4, "_uid": 4, "_pid": -1, "_level": 0 } ] 其中 “ParentUID”: 1, {Name: "P1", UID: 1, Tasks: [ {Name: "task1", UID: "p1", Start: "2007-01-03T00:00:00", Finish: "2007-01-03T23:59:59", PercentComplete: 0, Duration: 1*24*3600}, ] }, 这么多。所以我把最上面的json 转化为对象的过程,是出错的。 |
|
10分 |
1. Java代码中利用map及list构造json对象
Map构造json: Map map = new HashMap(); map.put(“test1″,”10001”); map.put(“test2″,”10002”); map.put(“test3″,”10003”); JSON json = JSONObject.fromObject(map); json解析成Java对象: MorphDynaBean m = (MorphDynaBean) JSONSerializer.toJava(json); /*构造MorphDynaBean对象*/ m.get(“test1”); m.get(“test2”); m.get(“test3”); List构造json: List list = new ArrayList(); list.add(“10001”); list.add(“10002”); list.add(“10003”); JSON json = JSONArray.fromObject(list); ArrayList ls = (ArrayList) JSONSerializer.toJava(json); json解析成Java对象 ArrayList arrayList = (ArrayList) JSONSerializer.toJava(ls); /*解析成arraylist*/ ———————————————————————————————————————————————————————————————————————————————— 2. JQuery中使用json对象: ———————————————————————————————————————————————————————————————————————————————— <script type=”text/javascript” src=”/JqueryWeb/jquery/jquery-1.5.2.js”></script> <script type=”text/javascript”> $(document).ready(function(){ $(“#test1”).click(function(){ $.getJSON(“register.action”,{data:”123456″}, function(data){ alert(data.a+”:”+data.b+”:”+data.c); }); }); }); </script> |
5分 |
解析json对象,重新构造成你需要的就可以了,没有其他办法……………
|
借助第三方类库很容易
否则就要自己把字符串变成树结构 然后也很容易 |
|
10分 |
你重新订一个model 然后去掉你不需要的json 字段,然后用
第3方工具转化。 |
可以的,完全可以的
|
|
用fastjson,对象跟json之间互相转换,不需要的属性可以直接用注解配置不要序列化,然后你得到的对象就只是你想要的。
|
|
5分 |
亲,你想多了,现在json哪还有处理不过来的,多复杂的对象和数据相互转换都是没有问题的!参考一下这篇文章http://blog.csdn.net/luo201227/article/details/23436951
|
5分 |
Province p1=new Province(1,"四川省");
Province p2=new Province(1,"浙江省");
Province p3=new Province(1,"山西省");
List<Province> list=new ArrayList<Province>();
list.add(p1);list.add(p2);list.add(p3);
response.setHeader("content-type", "text/html;charset=utf-8");
PrintWriter pw=response.getWriter();
JsonConfig config=new JsonConfig();
//使用这个方法可以将不需要转成json格式的字段 屏蔽掉
config.setExcludes(new String[]{"id"});
//将一个集合转换成json格式
String data=JSONArray.fromObject(list,config).toString();
//讲一个对象转换成Json格式,同样可以使用JsonConfig屏蔽不想要转换的字段
String data2=JSONObject.fromObject(p1).toString();
System.out.println(data);
pw.write(data);
我用的是Json-lib |
5分 |
private static void test() {
// TblAreaCodeDTO dto1 =new TblAreaCodeDTO(); // dto1.setId(“1a”); // dto1.setAreaName(“haha”); // TblAreaCodeDTO dto2 =new TblAreaCodeDTO(); // dto2.setId(“1b”); // dto2.setAreaName(“baba”); // TblAreaCodeDTO dto3 =new TblAreaCodeDTO(); // dto3.setId(“1c”); // dto3.setAreaName(“dada”); // List<TblAreaCodeDTO> list=new ArrayList<TblAreaCodeDTO>(); // list.add(dto1); // list.add(dto2); // list.add(dto3); // JsonConfig j=new JsonConfig(); // //过滤的属性 // j.setExcludes(new String[]{“pageNo”,”pageSize”,”parentId”,”multipartRequestHandler”,”servletWrapper”,”sortIndex”}); // net.sf.json.JSONArray jj=net.sf.json.JSONArray.fromObject(list, j);//对象过滤属性后转json // System.out.println(jj); // TblAreaCodeDTO td=new TblAreaCodeDTO(); // Object[] ob=new Object[jj.size()]; // for (int i = 0; i < jj.size(); i++) { // JSONObject jsj=jj.getJSONObject(i); // ob[i]=jsj.toBean(jsj, TblAreaCodeDTO.class); // // } // //json转对象 // for (int i = 0; i < ob.length; i++) { // td=(TblAreaCodeDTO)ob[i]; // } // System.out.println(“-ID=:”+td.getId()+”—-name=:”+td.getAreaName()); // // } |