想必大家在日常编码过程中肯定少不了使用一些JSON工具包的吧,比如 Gson、FastJson、JackSon、Json lib 等等,它们都属于 JSON 工具包。我个人比较喜欢 Gson,接下来咋们使用 Gson 进行一些常规的 Json 转换等简单运用吧。
⚠️注意:代码中使用了 Guava 工具包,在执行下述代码时请注意添加相关的 jar 包依赖,Guava 工具包与本次的重点 Gson 无关,仅用来快速创建 List 等场景。本次使用的 Gson 版本为 2.8.7 ,测试时请尽量保持一致。
Gson
Gson 是一个 Java 库,是目前功能最全的 Json 解析神器。Gson 的应用主要为 toJson 与 fromJson 两个转换函数,无依赖,不需要例外额外的 jar,能够直接跑在 JDK 上。它可用于将 JSON 字符串转换为等效的 Java 对象。Gson 可以处理任意 Java 对象,包括您没有源代码的预先存在的对象。
Gson官方地址:https://github.com/google/gson
Maven依赖引入方式
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.7</version>
</dependency>
Gradle依赖引入方式
dependencies {
implementation 'com.google.code.gson:gson:2.8.7'
}
下载 Jar 包手动导入的方式
Maven中央仓库 Gson 下载连接:gson-2.8.7
本站附件 Gson 下载链接:gson-2.8.7
如果 Maven 中央仓库访问下载较慢则建议直接下载本站附件提供的 Gson 包。
常规使用-Code
package com.gson;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.Serializable;
import java.lang.reflect.Modifier;
import java.util.List;
/**
* Gson测试类
* @author dev.hy
*/
public class GsonClass {
public static void main(String[] args) {
GsonEntity entity4 = new GsonEntity("<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>hyblogs-Gson</title></head><body> <h1>dev.hy</h1> <p>huangyong。</p></body></html>", 4);
GsonEntity entity3 = new GsonEntity("dev.hyblogs.com", 3, Lists.newArrayList(entity4));
GsonEntity entity2 = new GsonEntity("dev.hyblogs", 2, Lists.newArrayList(entity3), "Public-2", "Hello!!!");
GsonEntity entity1 = new GsonEntity("dev.hy", 1, Lists.newArrayList(entity2), "Public-1", "Fuck it!!");
GsonEntity entity0 = new GsonEntity("dev", 0, Lists.newArrayList(entity1), "Public-0", "Oh!!");
/* 将Java对象转换成Json字符串 */
String jsonStr0 = new GsonBuilder().create().toJson(entity0);
System.out.println("jsonStr0:" + jsonStr0);
/* 将Java对象转换成Json字符串--保留值为空(null)的字段 */
String jsonStr1 = new GsonBuilder().serializeNulls().create().toJson(entity0);
System.out.println("jsonStr1:" + jsonStr1);
/* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(private) */
String jsonStr2 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PRIVATE).create().toJson(entity0);
System.out.println("jsonStr2:" + jsonStr2);
/* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(public) */
String jsonStr3 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PUBLIC).create().toJson(entity0);
System.out.println("jsonStr3:" + jsonStr3);
/* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(protected) */
String jsonStr4 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create().toJson(entity0);
System.out.println("jsonStr4:" + jsonStr4);
/* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(static) */
String jsonStr5 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.STATIC).create().toJson(entity0);
System.out.println("jsonStr5:" + jsonStr5);
/* 将Java对象转换成Json字符串--禁用Html转义 */
String jsonStr6 = new GsonBuilder().disableHtmlEscaping().create().toJson(entity0);
System.out.println("jsonStr6:" + jsonStr6);
/* 将Json字符串转换成Java对象(含List对象) */
GsonEntity gsonEntity = new Gson().fromJson(jsonStr0, GsonEntity.class);
System.out.println("gsonEntity:" + gsonEntity);
}
/**
* Gson测试实体类
*/
static class GsonEntity implements Serializable {
private static final long serialVersionUID = 2279477648424876248L;
/** Name */
private String name;
/** Code */
private Integer code;
/** Children */
List<GsonEntity> children;
/** Public Field */
public String publicField;
/** Static Field */
static int staticField;
/** Transient Field */
transient String transientField;
public GsonEntity() {