您的位置:首页 > Web前端 > JavaScript

Gson解析嵌套json

2016-07-28 15:55 766 查看
最近发现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库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gson json