最近发现Android Studio 有一个插件 GsonFormat,根据json数据格式生成相应的实体类。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
测试api接口:http://v5.pc.duomi.com/search-ajaxsearch-searchall?kw=json&pi=1&pz=20请求得到的测试json:
{
"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"
}
]
}
如上所示:
值以“[]”包括的是数组list类型的(上面的Array)
于是新建一个类Bean:
albums 、artists、 tracks 都是"[]"包含的,所以为list。
第一层就写完了,继续往下走;
albums:
新建AlbumsBean类:
artists值为数组,用list。
artists:
新建ArtistsBean类:
tracks:
新建TracksBean类:
artists与上面一样,直接用ArtistsBean即可。
于是,第二层也走完了。
第三层
track里的album类和medias数组
新建AlbumBean
于是,完成了。
最后别忘了生成get() 、set()函数
Gson解析:
Gson gson = new Gson(); java.lang.reflect.Type type = new TypeToken() { }.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
所以这个bean类如下图:
最后再生成get和set函数即可。
配合Gson使用:
Gson gson=new Gson();
Bean bean=gson.fromJson("要转化的String值",Bean.class);
这样就可以了。
代码下载地址:http://download.csdn.net/detail/u014290233/9588905 记得改类名和导入Gson、okhttp库。