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