Json学习笔记

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 + '\'' +
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值