京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Google Gson API 介绍与使用

2020-10-19 15:05| 发布者: zhaojun917| 查看: 3497| 评论: 0

摘要: 目录Gson 概述与下载Gson (反)序列化 Java 对象JsonElement Json 元素JsonObject Json 对象JsonArray Json 数组JsonParser Json 解析GsonBuilder 构建 GsonGson 概述与下载1、Java解析Json最常用的类库有:google 的 ...

目录

Gson 概述与下载

Gson (反)序列化 Java 对象

JsonElement  Json 元素

JsonObject Json 对象

JsonArray Json 数组

JsonParser Json 解析

GsonBuilder 构建 Gson


Gson 概述与下载

1、Java 解析 Json 最常用的类库有:google 的 Gson阿里巴巴的 FastJson、以及 Jackson。这些都是非常优秀而且常用的库。

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

3、gson 在 github 上开源地址:https://github.com/google/gson

二进制开发包下载:gson 二进制开发包下载地址:https://search.maven.org/artifact/com.google.code.gson/gson/2.8.5/jar

 gson-2.8.4.jar下载gson-2.8.5.jar下载

Maven 依赖:gson 在 Maven 仓库地址:https://mvnrepository.com/artifact/com.google.code.gson/gson

  1. <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
  2. <dependency>
  3.   <groupId>com.google.code.gson</groupId>
  4.   <artifactId>gson</artifactId>
  5.   <version>2.8.5</version>
  6. </dependency>

Gson (反)序列化 Java 对象

1、com.google.gson.Gson 提供 toJson() 和 fromJson() 方法用于序列化与反序列化  Java 对象。

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

3、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)
T fromJson(Reader json, Type typeOfT)
将从指定字符输入流读取的Json反序列化为指定类的对象,如果指定的类是泛型类型,则调用 {@link#fromJson(Reader,type)}
序列化为对象
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)}
JsonElement toJsonTree(Object src, Type typeOfSrc) 

API 演示源码:https://github.com/wangmaoxiong/apache-study/blob/master/src/main/java/com/wmx/gson/GsonTest.java

JsonElement  Json 元素

1、JsonObject、JsonArray、JsonPrimitive、JsonNull 都是 JsonElement 的子类,JsonElement  常用方法:

JsonElement deepCopy()返回此元素的深层副本,克隆。
 BigDecimal getAsBigDecimal()将此元素作为 BigDecimal 类型获取,如果元素不是 JsonPrimitive,则引发 ClassCastException,
如果元素不是有效的 BigDecimate,则 @throws NumberFormatException。
如果元素属于 JsonArray 类型,但包含多个元素,则引发 IllegalStateException。
BigInteger getAsBigInteger()将此元素作为 BigInteger  类型获取,如果元素不是 JsonPrimitive,则引发 ClassCastException,
如果元素不是有效的 BigInteger ,则 @throws NumberFormatException。
如果元素属于 JsonArray 类型,但包含多个元素,则引发 IllegalStateException。
boolean getAsBoolean()将此元素作为原始布尔值获取,如果元素不是 JsonPrimitive 并且不是有效的布尔值,则引发 ClassCastException,
如果元素属于 JsonArray 类型,但包含多个元素,则引发IllegalStateException
byte getAsByte()将此元素作为原始 byte  值获取,如果元素不是 JsonPrimitive 并且不是有效的布尔值,则引发 ClassCastException,
如果元素属于 JsonArray 类型,但包含多个元素,则引发IllegalStateException

其它 Java 基本数据类型也是同理:

double getAsDouble()、char getAsCharacter()、float getAsFloat()、int getAsInt()、long getAsLong()、short getAsShort()

JsonArray getAsJsonArray()将此元素作为 JsonArray 获取,如果元素是其他类型的元素,则会生成 IlleglastateException 异常,
因此最好先调用 isJsonArray() 方法确保该元素是所需的类型,然后再使用此方法。
JsonObject getAsJsonObject()将此元素作为 JsonObject 获取,如果元素是其他类型的元素,则会引发 IlleglastateException 异常,
因此最好先通过调用 isJsonObject() 方法来确保该元素是所需类型之后使用此方法。
JsonPrimitive getAsJsonPrimitive()

将此元素作为 JsonPrimitive 获取,如果元素是其他类型的元素,则会引发 IlleglastateException 异常,
因此最好先通过调用 isJsonPrimitive() 方法来确保该元素是所需的类型之后再使用此方法。

JsonPrimitive 值可以是 Java 字符串、Java 基本数据类型及其包装器类型。

boolean isJsonArray()

验证此元素是否为数组,如果此元素属于 JsonArray 类型,则返回 true,否则返回 false。

boolean isJsonNull()

验证此元素是否表示 null 值,如果此元素的类型为 JsonNull,则返回 true,否则返回 false。

boolean isJsonObject()

验证此元素是否为 JsonObject 对象。

boolean isJsonPrimitive()

以验证此元素是否为 Java 数据类型。
  1. /**
  2. * JsonPrimitive getAsJsonPrimitive():
  3. * 将此元素作为 JsonPrimitive 获取,如果元素是其他类型的元素,则会引发 IlleglastateException 异常,
  4. * 因此最好先通过调用 isJsonPrimitive() 方法来确保该元素是所需的类型之后再使用此方法。JsonPrimitive 值可以是 Java 字符串、Java 基本数据类型及其包装器类型。
  5. */
  6. @Test
  7. public void test12() {
  8. String json = "[\"本级小计\",368.00,328.00,]";
  9. JsonElement sourceJsonElement = new JsonParser().parse(json);
  10. 关闭

    站长推荐上一条 /6 下一条

    QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

    GMT+8, 2025-8-16 01:40 , Processed in 0.032195 second(s), 18 queries .

    Powered by Mxzdjyxk! X3.5

    © 2001-2025 Discuz! Team.