fastjson和net.sf.json兩種包下多層解析json


被json坑的沒睡好,java明明用對象可以解決的事情,非得用多層json,沒辦法,別人寫好的接口,調吧。

話說本菜鳥原來只解析過一層json,這下又長知識了。這就把整個過程一一道來。。。

一、引入net.sf.json包

首先用net.sf.json包,當然你要導入很多包來支持commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-2.1-jdk15.jar,自己百度下載吧

然后使用方法:

json串:{\"code\":0,\"msg\":\"成功\",\"data\":{\"template\":{\"templateId\":23,\"code\":\"redmine\",\"type\":0,\"status\":0,\"nodeName\":\"會員期限即將到期\",\"detail\":\"1個月\",\"content\":\"您的會員...\"}}}

調用:

Map<String,String> dto = new HashMap<String,String>();
dto.put("code", app.getCode());

xxService.getxx(JSONObject.fromObject(dto).toString());

解析:

JSONObject jsonObject = JSONObject.fromObject(msgContent);  
JSONObject o2=JSONObject.fromObject(jsonObject.get("data"));
JSONObject o3=JSONObject.fromObject(o2.get("template"));

(String)o3.get("content")

好了,你就獲得到最底層的內容了

 

如果是json串中使用了[]的這種就需要用到JSONArray了,這篇博文寫的不錯http://blog.csdn.net/qq_22792489/article/details/51111890

有的時候你只是再原來的基礎上改代碼,但是別人用的是com.alibaba.fastjson包,沒辦法,只能兼容了唄,那就用com.alibaba.fastjson吧,只是方法名不一樣,功能實現就行

 

二、引入com.alibaba.fastjson包

調用:

Map<String,String> dto = new HashMap<String,String>();
        dto.put("code", "haha");
        System.out.println(JSONObject.toJSON(dto).toString());

解析:

JSONObject jsonObject = JSONObject.parseObject(result);        
JSONObject o2=JSONObject.parseObject((String) jsonObject.getString("data"));
JSONObject o3=JSONObject.parseObject((String) o2.getString("template"));
System.out.println((String) jsonObject.getString("data"));
System.out.println((String) o2.getString("template"));
System.out.println((String) o3.getString("content"));

 最底層的模板內容也有了,大功告成!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM