Java中的Json转换

5 阅读1分钟

能提供json转换的几种包

  1. GsonUtil

  2. JacksonUtil(JacksonUtil.serialize(req))

  3. ObjectMapper

Gson 是什么

Gson 是 Google 开发的一个 Java 库,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化转换。

核心结构

1. 主要组件

  • Gson 类: 核心转换器,提供 toJson()fromJson() 方法

  • GsonBuilder: 用于配置和构建 Gson 实例

  • TypeAdapter: 自定义类型转换器

  • JsonElement 体系: 表示 JSON 数据结构的 Java 对象

2. JsonElement 层次结构

JsonElement (抽象基类)
├── JsonPrimitive (基本类型: String, Number, Boolean)
├── JsonObject (JSON 对象: {key: value})
├── JsonArray (JSON 数组: [element1, element2])
└── JsonNull (null 值)

Gson vs JSON 的区别

方面

JSON

Gson

本质

数据交换格式标准

Java 库/工具

作用

定义数据结构规范

实现 Java 对象与 JSON 的转换

形态

文本格式字符串

Java 代码库

使用场景

跨语言数据传输

Java 应用中的 JSON 处理

代码中的 Gson 配置

GsonBuilder gsonBuilder = new GsonBuilder()
    .disableHtmlEscaping()  // 禁用HTML转义
    .registerTypeAdapter(Date.class, new GsonDateSerializer())    // 自定义Date序列化
    .registerTypeAdapter(Date.class, new GsonDateDeserializer())  // 自定义Date反序列化
    .registerTypeAdapter(new TypeToken<Map<String, Object>>(){}.getType(), new DataTypeAdapter())
    .registerTypeAdapter(new com.google.gson.reflect.TypeToken<Map<String, Object>>() {}.getType(), new ExtraInfoDeserializer());

主要功能

1. 序列化 (Java → JSON)

public static String toJson(Object o) {
    return gson.toJson(o);
}

2. 反序列化 (JSON → Java)

public static <T> T fromJson(String json, Class<T> clazz) {
    return gson.fromJson(json, clazz);
}

3. 自定义转换器

  • GsonDateSerializer: 将 Date 对象转换为时间戳

  • GsonDateDeserializer: 将时间戳转换为 Date 对象

总结

  • JSON 是数据格式标准

  • Gson 是处理 JSON 的 Java 工具库

  • Gson 提供了灵活的配置选项和自定义转换能力

  • 通过 TypeAdapter 可以实现复杂的数据类型转换