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;