在这里插入图片描述
JSON数据结构特点及Java解析JSON的方法

Gson概述

Gson是谷歌官方推出的支持JSON和Java Oject相关转换的开源Java库。
开源地址:https://github.com/google/gson

使用方式

Android Studio导入Gson

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

序列化Java对象

首先创建一个User类并提供如下属性

public class User {
    public String name;
    public int age;
    public  String phone;

    public User(String name, int age, String phone) {
        this.name = name;
        this.age = age;
        this.phone = phone;
    }
}

Gson序列化改对象方法

User student = new User("lucas",30,"18888888888");
Gson gson = new Gson();
String string = gson.toJson(student);

得到的结果如下:

{
  "name": "lucas",
  "age": 30,
  "phone": "18888888888"
}

Gson解析JSON对象

Gson解析JSON对象字符串

{
  "name": "lucas",
  "age": 30,
  "phone": "18888888888"
}
Gson gson = new Gson();
User bean = gson.fronJson(jsonData, User.class);

Gson解析JSON数组

反序列化的JSON数组如下

[ "张三", "李四", "王五" ]
Gson gson = new Gson();
String[] strings = gson.fromJson(result, String[].class);

Gson解析List

[
  {
    "id": "001",
    "age": 30,
    "name": "张三",
    "isstudent": false
  },
  {
    "id": "002",
    "age": 25,
    "name": "李四",
    "isstudent": true
  },
  {
    "id": "003",
    "age": 26,
    "name": "王五",
    "isstudent": true
  }
]
Gson gson = new Gson();
Type userListType = new TypeToken<ArrayList<User>>(){}.getType();
List<User> userList = gson.fromJson(result, userListType);

Gson中的注解

@SerializedName

该注解是用来解决字段名并不一致

@SerializedName("name")
@SerializedName({"name1", "name2"})  // 可以有多个备选值
public String name1;

@Expose

该注解是用来限定某个字段不参加序列化或反序列化

@Expose(serialize=false,deserialize=false)
private String name;

Android Studio JSON插件

GsonFormat

虽然我们学会了用Gson解析JSON,但是写实体类是一件很枯燥、耗时的事情,我们需要对着api文档返回的数据一个一个的去建各种实体类。想摆脱这种烦恼的事情,我们可以用GsonFormat插件,帮我我们自动的把JSON转成实体类。
安装方法如下:
在这里插入图片描述
使用方式和效果演示:

  • 新建实体类
  • 右键generate
  • GsonFormat
    在这里插入图片描述
    这样的话我们就不用再一个个的新建试题类了

JsonOnlineViewer

这是一个Android Studio中调试接口的神器
在这里插入图片描述
使用方法:
在这里插入图片描述
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐