前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android之Google Gson介绍

Android之Google Gson介绍

作者头像
李小白是一只喵
发布2021-01-13 10:01:34
1.3K0
发布2021-01-13 10:01:34
举报
文章被收录于专栏:算法微时光

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文件中添加

代码语言:javascript
复制
dependencies {
XXX
XXX
implementation 'com.google.code.gson:gson:2.6.2'
}

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

序列化使用

MainActivity.java:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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 +
                '}';
    }
}

执行效果:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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 +
                '}';
    }
}

执行效果:

代码语言:javascript
复制
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}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Gson
    • Gson 序列化 Java 对象
      • Gson 反序列化 Java 对象
      • 实战使用
        • 序列化使用
          • 反序列化使用
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档