Code Bye

如何对json数据进行修剪

由于方法提供的json数据中有我不想要的东西,有没有方法在java里对json 进行修改
例如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,
                “_id”: 1,
                “__Index”: 0
和 “_id”: 4,
        “_uid”: 4,
        “_pid”: -1,
        “_level”: 0
数据都不是我需要。
我现在需要把json转化为一个list对象,
然后我定义的list对象只有

{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 转化为对象的过程,是出错的。
所以我需要对最上面的json进行修剪,把不需要的去掉,没有什么快捷的方法可以使用吗?
例如使用某些工具jar包,可以对其进行裁剪,等等的,求解答。


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方工具转化。
参见帖子 http://bbs.csdn.net/topics/390816741
可以的,完全可以的
用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());
//
// }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何对json数据进行修剪