最近發現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庫。