irpas技术客

Android-第十二节JSON解析第三方框架Gson_夏屿__android json 解析框架

网络投稿 7203

目录 一、Gson简介二、Gson使用方法三、Gson解析数据3.1Gson解析JSON对象3.2Gson解析JSON对象嵌套3.3Gson解析JSON数组3.4Gson解析json对象数组3.5Gson解析json对象嵌套JSON对象数组3.6总结 四、插件推荐


一、Gson简介

Gson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象。Gson可以处理任意Java对象,包括您没有源代码的预先存在的对象。 开源地址: https://github.com/google/gson.

二、Gson使用方法

1.导入依赖包:

implementation 'com.google.code.gson:gson:2.9.0'

2.同步

三、Gson解析数据 3.1Gson解析JSON对象

案例1:

json数据: { “name”: “耀阳”, “age”:20, “sex”:“boy”}

1.修改端口,并且创建实体类(实体类变量名和json数据中key对应) 2.与json数据对应 3.创建Gson对象,然后获取实体类对应的数据

Gson gson=new Gson(); //创建Gson对象 Person person=gson.fromJson(result,Person.class);//第一个值传json数据,第二个值传解析的类型

4.运行结果: 5.可采用debug模式 6.对比之前用json方法解析步骤

//解析json对象数据 JSONObject jsonObject=new JSONObject(finalResult); //通过key来获取结果 String name=jsonObject.getString("name"); Integer age=jsonObject.getInt("age"); String sex=jsonObject.getString("sex"); Log.i("Main","解析之后的数据 name: "+name+"age: "+age+"sex: "+sex);

可以看出Gson解析省去了这些通过对应字段去取数据的步骤,而是可以直接帮我们解析实体类对应字段的值

3.2Gson解析JSON对象嵌套

案例2:

json数据:{ “age”:20, “name”:“耀阳”, “isboy”:true, “address”: { “province”:“湖南省”, “city”:“长沙市” } }

1.创建对应的实例类: 核心代码:

//json数据:{ //“age”:20, //“name”:“耀阳”, //“isboy”:true, //“address”: // { //“province”:“湖南省”, //“city”:“长沙市” // } // } public String name; public int age; public String sex; public Address address; public class Address{ public String province; public String city; }

2.activity代码只需要修改接口,其他的都不用改

3.3Gson解析JSON数组

案例3:

json数据: [ “false”, “true”, “false” ]

我们可以看到这是一个字符串数组,不是一个json对象,那我们就用一个字符串数组来接收,解析方法不变

核心代码:

Gson gson=new Gson(); String[] strings=gson.fromJson(result,String[].class); 3.4Gson解析json对象数组

案例4:

json数据: [ { “id”:“001”,“age”:30,“name”:“刘伟”, “isboy”:true }, { “id”:“002”,“age”:12,“name”:“微凉”, “isboy”:false }, { “id”:“003”,“age”:25,“name”:“阿欢”, “isboy”:false }, ]

1.创建新的实体类 核心代码:

public class Person2 { // [ // { "id":"001","age":30,"name":"刘伟", "isboy":true }, // { "id":"002","age":12,"name":"微凉", "isboy":false }, // { "id":"003","age":25,"name":"阿欢", "isgirl":false }, // ] public String id; public int age; public String name; public boolean isboy; }

代码:

Gson gson=new Gson(); List<Person2> list=gson.fromJson(result, new TypeToken<ArrayList<Person2>>(){}.getType()); 3.5Gson解析json对象嵌套JSON对象数组

案例5:

{ “grade”: “18级”, “classname”: “护理学院”, “students”: [ { “id”: “001”, “age”: 30, “name”: “张三”, “isstudent”: false }, { “id”: “002”, “age”: 25, “name”: “李四”, “isstudent”: true }, { “id”: “003”, “age”: 26, “name”: “王五”, “isstudent”: true } ] }

1.创建实体类:

核心代码:

public class Person3 { public String grade; public String classname; public ArrayList<Students> students=new ArrayList<>(); public class Students{ public String id; public int age; public String name; public boolean isstudent; } }

核心代码:

Gson gson=new Gson(); Person3 person3=gson.fromJson(result,Person3.class); 3.6总结

json数据如果是大括号{}开头的,我们就把它解析成一个对象,如果是中括号【】开头的,我们就把它解析到一个List<>里面

四、插件推荐

GsonFormat一键生成实体类 1.创建实体类 2.将json代码复制进去,点击确定: 3.自动生成所需代码: 4.点击运行结果: 大家有没有发现现在越来越方便了 从一开始网络请求需要手写Thread线程,到json代码解析,再到现在gson对json进行解析 加油!越来越多的框架值得我们去学习冲冲冲!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #JSON #解析框架