IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android-第十二节JSON解析第三方框架Gson -> 正文阅读

[移动开发]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进行解析 加油!越来越多的框架值得我们去学习冲冲冲!

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:56:51  更:2022-03-13 21:57:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/25 18:22:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码