相关文章推荐
开朗的枇杷  ·  Java ...·  10 月前    · 
傲视众生的啤酒  ·  dart int转枚举-掘金·  2 年前    · 
玩滑板的钥匙  ·  C语言入门开发: ...·  2 年前    · 
开朗的松鼠  ·  Consume an ...·  2 年前    · 
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 算法微时光 Android之Google Gson介绍
1 0

海报分享

Android之Google Gson介绍

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 {
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 +