Gson解析嵌套json

1 篇文章 0 订阅
1 篇文章 0 订阅

最近发现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库。



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值