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">{
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解析:
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库。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
</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库。
相关文章推荐
- 使用 Python 处理 JSON 格式的数据
- Gson.toJson()时内存溢出StackOverflowError
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- C#实现集合转换成json格式数据的方法
- ASP JSON类文件的使用方法
- C# JSON格式化转换辅助类 ConvertJson
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- 深入理解PHP JSON数组与对象
- php解析json数据实例
- PHP中JSON的应用技巧