Android 如何使用GSON解析嵌套Json
Overview
如何使用GSON解析我们的嵌套Json?? 这个问题困扰了我很久,后来我学习了https://www.shycoder.cn/的WanAndroid 了解了皮毛,但是因为之学习了皮毛。让我吃了大亏。所以今天我们就来学习一下吧。
如何使用Gson解析嵌套Json?
啥叫嵌套Json就是类似与这个样子的。
那么我么们有该如何去解析他呢?以前我使用的是JSONObject 和 JSONArray去循环解析。但是后来了解了Gson后就抛弃他了。但是Gson我也只是学习了一点皮毛,知道这次遇到大亏,才打算好好学习一下。
啥是Gson
GSON弥补了JSON的许多不足的地方,在实际应用中更加适用于Java开发。在这里,我们主要讲解的是利用GSON来操作java对象和json数据之间的相互转换,包括了常见的对象序列化和反序列化的知识。
如何优雅的使用Gson解析我们的嵌套Json
我们以下面的数据作为数据源来解析一下:
[
{
"FoodId": "1",
"Category": "Package",
"FoodName": "FastFood",
"Price": "59",
"SaleAmount": "500",
"ThumbUp": "500",
"Description": "Description Description ",
"Photos": [
{
"Photo": "Base64String"
},
{
"Photo": "Base64String"
},
{
"Photo": "Base64String"
}
]
}
]
这个是我们获取食物数据和食物图片的。可以看到一个食物下面会出现多个图片。又是有好多张图片,所以Photos下又是一个Json数组。
那么我么需要如何解析呢?
先看看Gson是如何解析普通的Json字符串的:
Gson gson=new Gson();
List<TestEntity> testList=gson.fromJson(testJsonStr,TestEntity.Class);
这个就是我们解析普通的Json使用的方法。但是上面的嵌套Json该如何解析呢?
看看Json的结构是啥样的?
大致你可以把它分为两部分。
如何根据我们的Json结构设计我们的Entity
这个就是我根据我们的Json字符串写的实体类了。
红色方框里面(不包括绿色的)他就是我们食物的信息了,就是对应这Json字符串的红色方框里面的数据。然后看看我们你的绿色方框的,因为一个食物有多个图片所以我使用List来存储。但是为啥Photo的类型是String类型?因为这里的图片是Base64存储嘚。这样Entity就完成了。
看看如何解析
-
先是获取到我们的数据。
-
然后我们需要解析他。这里就和普通的Json一眼解析就可以了。非常的简单。
-
通过适配器绑定数据
-
这里我是用的是解析BaseAdaoter绑定到ListView
这样我们的解析Json就完成了。