JSON
定义
JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。
作用:
数据标记,存储,传输
特点:
1. 读写速度快
2.
解析简单
3.
轻量级
4.
独立于语言,平台
5.
具有自我描叙性
使用 Gson需要导包:
implementation 'com.google.code.gson:gson:2.8.4'
Gson基础使用案例一
Gson gson = new Gson();
//输出"1",单个字符也可以序列化
System.out.println(gson.toJson("1"));
//输出 "fw123"
System.out.println(gson.toJson("fw123"));
//打印结果:[1,2,3] ---这种形式是数组吗?
int[] value = {1,2,3};
System.out.println(gson.toJson(value));
//上面的序列化结果都是转化成字符串类型的
// 下面是反序列化的过程
//这是一个泛型入参的函数,打印的结果: i 的值为: 1
int i = gson.fromJson("1",int.class);
System.out.println("i 的值为: " + i);
//打印出来的值为: gsonBean的值为: {"mInt":1,"mStr":"22"}--- 这个是序列化格式
String gsonBean = gson.toJson(new GsonBean(1,"22"));
System.out.println("gsonBean的值为: " + gsonBean);
SerializedName注解的使用:
public class JsonAdepterTest {
static class SerializedNameTestClass {
@SerializedName("name") //给a设置Key值为:name
String a;
@SerializedName(value = "name1", alternate = {"name2", "name3"})
String b;
String c;
public SerializedNameTestClass(String a, String b, String c) {
this.a = a;
this.b = b;
this.c = c;
}
public static void test() {
SerializedNameTestClass target =
new SerializedNameTestClass("v1", "v2", "v3");
Gson gson = new Gson();
String json = gson.toJson(target);
System.out.println(json);
}
}
public static void main(String[] args) {
SerializedNameTestClass.test();
}
}
执行结果为:{"name":"v1","name1":"v2","c":"v3"}
JsonAdapter注解的使用:
@JsonAdapter(UserJsonAdapter.class)
static
class User {
public final String firstName, lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return "User{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
'}';
}
}
class UserJsonAdapter extends TypeAdapter<User> {
@Override
public void write(JsonWriter out, User user) throws IOException {
out.beginObject();
out.name("firstKey:");
out.value(user.firstName);
out.endObject();
out.beginObject();
out.name("secondKey");
out.value(user.lastName);
out.endObject();
}
@Override
public User read(JsonReader in) throws IOException {
in.beginObject();
in.nextName();
String nameParts1 = in.nextString();
in.endObject();
in.beginObject();
in.nextName();
String nameParts2 = in.nextString();
in.endObject();
return new User(nameParts1, nameParts2);
}
}
public static void main(String[] args) {
User user = new User("gg","Zero");
Gson gson = new GsonBuilder()
.setVersion(1.2).create();
String gsonStr = gson.toJson(user);
System.out.println("gsonStr=" + gsonStr);
user = gson.fromJson(gsonStr,User.class);
System.out.println("user: " + user);
}
输出结果:
gsonStr={"firstKey:":"gg"}{"secondKey":"Zero"}
user: User{firstName='gg', lastName='Zero'}
public class GsonError1 {
private String name;
private List<AuthorsBean> authors;
@Override
public String toString() {
return "GsonError1{" +
"name='" + name + '\'' +