美文网首页
Android之Google Gson介绍

Android之Google Gson介绍

作者: Lee_5566 | 来源:发表于2021-01-11 09:55 被阅读0次
    image.png

    Gson

    GSON 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库,可以快速的将一个 Json 字符转成一个 Java 对象,或者将一个 Java 对象转化为 Json 字符串。

    gson 在 github 上开源地址:Gson

    Java 解析 Json 最常用的类库有:google 的 Gson、阿里巴巴的 FastJson、以及 Jackson。

    image.png

    Gson 序列化 Java 对象

    com.google.gson.Gson提供 toJson() 方法用于序列化Java 对象。

    Gson 对象的 toJson 方法可以将 Java 基本数据类型、以及 POJO 对象、List、Map 、JsonElement 等转为 json 格式的字符串,

    函数 含义
    String toJson(Object src) 将指定的对象序列化为其等效的Json表示形式,当指定的对象不是泛型类型时,应使用此方法,如果对象是泛型类型,请改用 toJson(object,type).
    String toJson(Object src, Type typeOfSrc) 将指定的对象(包括泛型类型的对象)序列化为其等效的Json表示形式,对于非泛型对象,请改用{@link#toJson(Object)}
    String toJson(JsonElement jsonElement) 将 JsonElement 转换为其等效的JSON表示形式。
    JsonElement toJsonTree(Object src) 将指定的对象序列化为 JsonElement 的等效表示形式,当指定的对象不是泛型类型时,应使用此方法;如果对象是泛型类型,请改用{@link#toJsonTree(object,type)}

    Gson 反序列化 Java 对象

    com.google.gson.Gson 提供 fromJson() 方法用于反序列化 Java 对象.

    Gson 对象的 fromJson 方法做与 toJson 相反的操作,将 json 格式的字符串转为基本数据类型、 POJO 对象、List、Map 、JsonElement 等

    函数 含义
    T fromJson(String json, Class<T> classOfT) 将指定的 Json 反序列化为指定类的对象,如果指定的类是泛型类型,则使用 fromJson(String, Type)方法。
    T fromJson(String json, Type typeOfT) 将指定的 Json 反序列化为指定类型的对象,如果指定的对象是泛型类型,则此方法很有用,对于非泛型对象,请改用 fromJson(String json, Class<T> classOfT)
    T fromJson(JsonElement json, Class<T> classOfT) 将指定的 json 元素反序列化为指定类型的对象,如果指定的类是泛型类型,则使用 fromJson(JsonElement, Type) 方法。
    T fromJson(JsonElement json, Type typeOfT) -
    T fromJson(Reader json, Class<T> classOfT) 将从指定字符输入流读取的Json反序列化为指定类的对象,如果指定的类是泛型类型,则调用 {@link#fromJson(Reader,type)}
    T fromJson(Reader json, Type typeOfT) 将从指定字符输入流读取的Json反序列化为指定类的对象,如果指定的类是泛型类型,则调用 {@link#fromJson(Reader,type)}

    实战使用

    使用库的方法如下:
    项目文件baiapp->build.gradle文件中添加

    dependencies {
    XXX
    XXX
    implementation 'com.google.code.gson:gson:2.6.2'
    }
    

    然后在build.gradle上点sync刷新下就好了.

    序列化使用

    MainActivity.java:

    package com.exmple.testgson1;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    
    import com.google.gson.Gson;
    
    import java.util.Date;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            toJson2();
        }
    
        public void toJson2() {
            Person person = new Person();
            person.setId(1000);
            person.setName("华安");
            person.setBirthday(new Date());
            person.setMarry(true);
    
            Gson gson = new Gson();
            String jsonUser = gson.toJson(person);
            Log.d("lee---", "---" + jsonUser);
        }
    }
    

    Person.java:

    package com.exmple.testgson1;
    
    import java.util.Date;
    
    /**
     * @author wangMaoXiong
     * @version 1.0
     * @date 2020/7/13 20:28
     */
    public class Person {
        private Integer id;
        private String name;
        private Date birthday;
        private Boolean marry;
    
        public Person() {
        }
    
        public Person(Integer id, String name, Date birthday, Boolean marry) {
            this.id = id;
            this.name = name;
            this.birthday = birthday;
            this.marry = marry;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public Boolean isMarry() {
            return marry;
        }
    
        public void setMarry(Boolean marry) {
            this.marry = marry;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", birthday=" + birthday +
                    ", marry=" + marry +
                    '}';
        }
    }
    

    执行效果:

    2021-01-10 20:16:38.967 11658-11658/com.exmple.testgson1 D/lee---: ---{"birthday":"Jan 10, 2021 20:16:38","id":1000,"marry":true,"name":"华安"}
    

    反序列化使用

    MainActivity.java:

    package com.exmple.testgson1;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    
    import com.google.gson.Gson;
    
    import java.util.Date;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            fromJson2();
        }
    
        public void fromJson2() {
            String personJson = "{\"id\":9527,\"name\":\"华安\",\"birthday\":\"Nov 23, 2018 1:50:56 PM\",\"marry\":true}";
            Gson gson = new Gson();
            Person person = gson.fromJson(personJson, Person.class);
    
            Log.d("lee---", "---" + person);
        }
    }
    

    Person.java:

    package com.exmple.testgson1;
    
    import java.util.Date;
    
    /**
     * @author wangMaoXiong
     * @version 1.0
     * @date 2020/7/13 20:28
     */
    public class Person {
        private Integer id;
        private String name;
        private Date birthday;
        private Boolean marry;
    
        public Person() {
        }
    
        public Person(Integer id, String name, Date birthday, Boolean marry) {
            this.id = id;
            this.name = name;
            this.birthday = birthday;
            this.marry = marry;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public Boolean isMarry() {
            return marry;
        }
    
        public void setMarry(Boolean marry) {
            this.marry = marry;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", birthday=" + birthday +
                    ", marry=" + marry +
                    '}';
        }
    }
    

    执行效果:

    2021-01-10 20:21:00.783 13263-13263/com.exmple.testgson1 D/lee---: ---Person{id=9527, name='华安', birthday=Fri Nov 23 01:50:56 GMT+08:00 2018, marry=true}
    

    相关文章

      网友评论

          本文标题:Android之Google Gson介绍

          本文链接:https://www.haomeiwen.com/subject/ldikaktx.html