復雜json解析(json里面嵌套json)


         

    調用第三方接口,返回一堆json,我只想取得里面的某一個屬性,但是返回的比較復雜,無法直接拿到屬性,格式類似於這樣:

{"video":{"id":"29BA6ACE7A9427489C33DC5901307461","title":"體驗課01","desp":"","tags":" ","duration":503,"category":"07AD1E11DBE6FDFC","image":"http://2.img.bokecc.com/comimage/0DD1F081022C163E/2016-03-09/29BA6ACE7A9427489C33DC5901307461-0.jpg","imageindex":0,"image-alternate":[{"index":0,"url":"http://2.img.bokecc.com/comimage/0DD1F081022C163E/2016-03-09/29BA6ACE7A9427489C33DC5901307461-0/0.jpg"},{"index":1,"url":"http://2.img.bokecc.com/comimage/0DD1F081022C163E/2016-03-09/29BA6ACE7A9427489C33DC5901307461-0/1.jpg"},{"index":2,"url":"http://2.img.bokecc.com/comimage/0DD1F081022C163E/2016-03-09/29BA6ACE7A9427489C33DC5901307461-0/2.jpg"},{"index":3,"url":"http://2.img.bokecc.com/comimage/0DD1F081022C163E/2016-03-09/29BA6ACE7A9427489C33DC5901307461-0/3.jpg"}]}}

   其實我想獲得“duration”這個屬性,在網上搜索如何解析復雜json,五花八門,用什么技術的都有,但是都只用一種技術,依我看,幾種技術組合起來用才是效率最高

  
這里的jsonObject用的是net.sf.json.JSONObject,jar包為json-lib-2.2.2-jdk13.jar;Gson所用到的jar包為gson-2.3.1.jar,其中json-lib-2.2.2-jdk13.jar不能單獨使用,必須配合其他jar

下面代碼為JSONObject與Gson的組合使用獲取“duration”屬性,將服務器返回的json作為參數傳入即可

//解析json數據
    public static int parseJson(String str){
        JSONObject jObj = JSONObject.fromObject(str);
        Object obj=jObj.getJSONObject("video");
        String s2=obj.toString();
        Gson gson=new Gson();
        Map map=gson.fromJson(s2, Map.class);
        Number num=(Number)map.get("duration");
        return num.intValue();
    }


如果你想解析json里面的嵌套json數組,解決方法可參考這篇博客(http://blog.csdn.net/lhfeng/article/details/7398880)

在這里還有一個問題要提一下,由於duration屬性是double類型的,取出來數值是503.0,我不想帶小數點,所以我直接在下划線部分這樣寫

Integer num=(Integer)map.get("duration");

結果報錯了,報java.lang.Double cannot be cast to java.lang.Integer  ,Integer屬於不可更改類型,而且Double和Integer沒有任何繼承關系,當然不能這樣轉換。

注:java.lang.NumberInteger,Double的父類,所以要寫成樣 Number num=(Number)map.get("duration");最后再num.intValue()就可以去掉小數點了

這個錯誤可參考這篇博客(http://blog.sina.com.cn/s/blog_794d4bfd0102uz4i.html)


免責聲明!

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



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