跳到主要内容
Z

POJO 转 JSON

使用 Jackson、Gson 或 Moshi 将 Java 的 POJO(Plain Old Java Object)实例转换为 JSON。代码片段可直接复制粘贴运行,并附带反向转换工具,方便你在需要时重建同一个 POJO 类。

免费 无需注册 客户端运行 注重隐私 Updated
注意: POJO → POJO 转 JSON 是一个需要 JVM 运行时的过程(序列化器需要读取字段的实际值)。下面的代码示例运行在你自己的应用程序中;本页面仅作快速参考。需要反过来操作——把 JSON 转换成 Java POJO 类?使用 JSON to Java POJO.

Jackson —— Spring 默认使用

Spring Boot ships Jackson by default. ObjectMapper is thread-safe — reuse a single instance.

import com.fasterxml.jackson.databind.ObjectMapper;

private static final ObjectMapper MAPPER = new ObjectMapper();

public static String toJson(Object pojo) throws JsonProcessingException {
    return MAPPER.writeValueAsString(pojo);
}

// Pretty-printed:
String pretty = MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(pojo);

Annotate fields with @JsonProperty("snake_case") when the JSON field name differs from the Java field. @JsonIgnore skips a field; @JsonInclude(NON_NULL) drops nulls.

Gson —— 依赖最小,对 Android 友好

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

private static final Gson GSON = new GsonBuilder()
    .serializeNulls()              // include null fields
    .setPrettyPrinting()           // optional
    .create();

public static String toJson(Object pojo) {
    return GSON.toJson(pojo);
}

Use @SerializedName("json_field") on a Java field to override the JSON key. Mark fields transient to skip them.

Moshi —— 优先支持 Kotlin,可选代码生成

import com.squareup.moshi.Moshi;
import com.squareup.moshi.JsonAdapter;

Moshi moshi = new Moshi.Builder().build();
JsonAdapter<User> adapter = moshi.adapter(User.class);

String json = adapter.toJson(user);
// Pretty:
String pretty = adapter.indent("  ").toJson(user);

POJO 转 JSON 与其他替代方案的对比

POJO 转 JSON 与常见的浏览器及桌面替代方案对比 — 一览各项功能差异。
Concern Jackson Gson Moshi
Default in Spring Boot Jackson Jackson
Smallest jar Gson (~280KB) Jackson (3 modules ~2MB)
Kotlin support Moshi (best) Jackson kotlin module Gson (kludgy)
Annotation-free path Jackson + naming strategy Gson + FieldNamingPolicy Moshi reflection adapter
Streaming API JsonGenerator JsonWriter JsonWriter

常见问题

该用哪个库把 POJO 转换成 JSON?

如果是 Spring Boot 项目,推荐使用 Jackson——它已经内置在框架里,技术栈的其他部分也默认依赖它。如果是 Android 或对依赖体积敏感的 CLI 项目,可以选择 Gson(体积更小)或 Moshi(对 Kotlin 支持更好)。这三者都能处理同一个 POJO;区别主要在于与生态系统的契合度,而不是处理能力上的差异。

如何重命名 JSON 输出中的字段?

Jackson:<code class="font-mono">@JsonProperty("name")</code>。Gson:<code class="font-mono">@SerializedName("name")</code>。Moshi:<code class="font-mono">@Json(name = "name")</code>。这三个注解都直接加在字段声明上。

如何忽略 null 或空字段?

Jackson:在类或字段上加 <code class="font-mono">@JsonInclude(JsonInclude.Include.NON_NULL)</code>。Gson:默认会丢弃 null 值——如果想保留,需要在 builder 上调用 <code class="font-mono">.serializeNulls()</code>。Moshi:同样默认丢弃 null 值,除非 adapter 配置了 <code class="font-mono">.serializeNulls()</code>。

为什么我的 POJO 序列化不了——只输出一个空对象 {}?

Jackson 需要 public 的 getter 或默认构造函数,并且字段要能被访问到。如果使用了 Lombok,请确认已加上 <code class="font-mono">@Getter</code>(或 <code class="font-mono">@Data</code>)。对于 record(Java 16+),访问器方法会自动生成。

能不写 Java 代码就把 POJO 转换成 JSON 吗?

严格来说不行——JSON 序列化依赖于 Java 实例在运行时实际持有的值,所以必须有一个真正运行的 JVM。你不写代码也能做的是:先用我们的 <a class="underline" href="/json-to-java">JSON to Java POJO</a> 工具,根据一段 JSON 示例生成对应的 POJO 类,然后把上面的代码示例套用到你的项目里。

这种转换会丢失数据吗?

对于原始类型(primitive)和 String 不会丢失数据。但有些 Java 类型需要专门的 adapter:<code class="font-mono">LocalDateTime</code>(Jackson:需注册 <code class="font-mono">JavaTimeModule</code>)、<code class="font-mono">BigDecimal</code> 的精度(Jackson:<code class="font-mono">USE_BIG_DECIMAL_FOR_FLOATS</code>),以及 <code class="font-mono">enum</code> 的值(可以配置使用 <code class="font-mono">name()</code> 或 <code class="font-mono">ordinal()</code>)。

需要反向转换?

粘贴一段 JSON 示例,即可得到带类型的 Java POJO 类——支持 Jackson、Lombok 或 record 风格,嵌套类会自动生成。

打开 JSON to Java POJO →

什么是 POJO 转 JSON?

POJO 转 JSON 是指把一个 Java 实例——即包含字段、getter 和 setter 的 Plain Old Java Object——序列化为 JSON 字符串的过程。常用的标准库有 Jackson(`ObjectMapper.writeValueAsString(obj)`)、Gson(`new Gson().toJson(obj)`)和 Moshi(`moshi.adapter(MyType.class).toJson(obj)`)。每个库都会通过反射遍历对象的字段,应用相应注解(如果有的话,例如 `@JsonProperty`、`@SerializedName`),然后生成合法的 JSON。

概要

POJO 转 JSON 是 Zerethon Tools 提供的免费 开发者 工具。使用 Jackson、Gson 或 Moshi 将 Java 的 POJO(Plain Old Java Object)实例转换为 JSON。代码片段可直接复制粘贴运行,并附带反向转换工具,方便你在需要时重建同一个 POJO 类。. 完全在浏览器中运行 — 无需注册,无需上传。

分类
开发者
价格
免费
隐私
基于浏览器
注册
无需

隐私

除非另有说明,否则你的数据永远不会离开浏览器。POJO 转 JSON 完全在客户端运行 — 无需上传服务器,不记录日志,不追踪你输入的内容。

相关工具

在 Zerethon Social 上创作、分享与成长

免费注册。赚取积分,收集成就,与全球创作者建立联系。

免费注册