Android-第十二节JSON解析第三方框架Gson


一、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进行解析 加油!越来越多的框架值得我们去学习冲冲冲!

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值