Gson解析嵌套json

最近發現Android Studio 有一個插件 GsonFormat,根據json數據格式生成相應的實體類。

----------------------------------------------------------------------------------------------------------------------------------------------------------------


</pre>測試api接口:http://v5.pc.duomi.com/search-ajaxsearch-searchall?kw=json&pi=1&pz=20<p></p><p></p><p>請求得到的測試json:</p><p></p><p></p><pre name="code" class="html">{
    "album_offset":0,
    "albums":[
        {
            "artists":[
                {
                    "id":51066987,
                    "name":"Björn J:son Lindh",
                    "portrait":"http://pic.cdn.duomi.com/imageproxy2/dimgm/scaleImage?url=http://img.kxting.cn//p1/06/05/70553774.jpg&w=150&h=150&s=100&c=0&o=0&m=",
                    "valid":true
                }
            ],
            "available":true,
            "company":"",
            "cover":"http://pic.cdn.duomi.com/imageproxy2/dimgm/scaleImage?url=http://img.kxting.cn//p1/24/04/71031316.jpg&w=150&h=150&s=100&c=0&o=0&m=",
            "id":2022121,
            "name":"Våta Vingar",
            "num_tracks":1,
            "release_date":"1980-01-01",
            "type":"專輯"
        }
    ],
    "artist_offset":0,
    "artists":[
        {
            "id":60030973,
            "name":"J-Son",
            "num_albums":0,
            "num_tracks":0,
            "portrait":"http://pic.cdn.duomi.com/imageproxy2/dimgm/scaleImage?url=http://img.kxting.cn//p1/11/01/70559545.jpg&w=150&h=150&s=100&c=0&o=0&m=",
            "valid":true
        },
        {
            "id":51066987,
            "name":"Björn J:son Lindh",
            "num_albums":1,
            "num_tracks":1,
            "portrait":"http://pic.cdn.duomi.com/imageproxy2/dimgm/scaleImage?url=http://img.kxting.cn//p1/06/05/70553774.jpg&w=150&h=150&s=100&c=0&o=0&m=",
            "valid":true
        }
    ],
    "dm_error":0,
    "error_msg":"操作成功",
    "recommend":0,
    "total_albums":1,
    "total_artists":2,
    "total_tracks":1,
    "track_offset":0,
    "tracks":[
        {
            "album":{
                "cover":"/p1/24/04/71031316.jpg",
                "id":2022121,
                "name":"Våta Vingar"
            },
            "artists":[
                {
                    "id":51066987,
                    "name":"Björn J:son Lindh",
                    "num_albums":1,
                    "num_tracks":1,
                    "portrait":"/p1/06/05/70553774.jpg",
                    "valid":true
                }
            ],
            "availability":"1110",
            "dlyric":"",
            "id":21716970,
            "medias":[
                {
                    "bitrate":192,
                    "p2purl":"E2A851756465FD0112050000009691010300000063.mp3"
                }
            ],
            "mv":0,
            "slyric":"",
            "title":"Brusa Högre Lilla å",
            "isdown":"1",
            "isplay":"1"
        }
    ]
}

json在線格式化可以用這個地址:http://json.cn/


如上所示:


值以“[]”包括的是數組list類型的(上面的Array)

於是新建一個類Bean:



albums 、artists、 tracks 都是"[]"包含的,所以爲list。

第一層就寫完了,繼續往下走;



albums:


新建AlbumsBean類:



artists值爲數組,用list。


artists:


新建ArtistsBean類:


tracks:



新建TracksBean類:

artists與上面一樣,直接用ArtistsBean即可。


於是,第二層也走完了。


第三層

track裏的album類和medias數組

新建AlbumBean



MediasBean


於是,完成了。


最後別忘了生成get() 、set()函數

Gson解析:

Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<Bean>() {
}.getType();
Bean bean = gson.fromJson(string, type);


Android studio 生成get() 、set()函數 快捷方式

先寫類的屬性——>  空白處右鍵——> Generate...——>Getter and Setter 。


這樣寫就是建的類有點多,不過也可以寫出內部類。


--------------------------------------------------------------------------------------------------------------

其實有更簡單的,上面寫的麻煩了。


舉例:

"artists":[
                {
                    "id":50001179,
                    "name":"張傑",
                    "portrait":"http://pic.cdn.duomi.com/imageproxy2/dimgm/scaleImage?url=http://img.kxting.cn//p1/01/23/71260817.jpg&w=150&h=150&s=100&c=0&o=0&m=",
                    "valid":true
                }

]

由於artists 值用[],表明是一個數組


private List<Artists> artists;


然後直接定義內部類Artists



所以這個bean類如下圖:


最後再生成get和set函數即可。


配合Gson使用:

Gson gson=new Gson();

Bean bean=gson.fromJson("要轉化的String值",Bean.class);


這樣就可以了。





代碼下載地址:http://download.csdn.net/detail/u014290233/9588905  記得改類名和導入Gson、okhttp庫。



發佈了31 篇原創文章 · 獲贊 29 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章