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"}

反序列化JSON对象

反序列化如下字符串

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

反序列化JSON数组

反序列化的JSON数组如下

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

反序列化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);

注解

字段名并不一致

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

限定某个字段不参加序列化或反序列化

@Expose(serialize=false,deserialize=false)
private String name;
发布了6 篇原创文章 · 获赞 18 · 访问量 1613

猜你喜欢

转载自blog.csdn.net/huweiliyi/article/details/105404022