Chuyển đổi POJO sang JSON
Chuyển một instance POJO (Plain Old Java Object) của Java sang JSON bằng Jackson, Gson, hoặc Moshi. Các đoạn code sao chép-dán-là-chạy được, kèm công cụ chuyển ngược khi bạn cần dựng lại chính class POJO đó.
Jackson — mặc định trong 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 — dependency tối giản, thân thiện với 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 — ưu tiên Kotlin, có tùy chọn codegen
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);
Chuyển đổi POJO sang JSON so với các lựa chọn khác
| 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 |
Câu hỏi thường gặp
Nên dùng thư viện nào để chuyển POJO sang JSON?
Với Spring Boot, hãy dùng Jackson — nó đã được đóng gói sẵn và phần còn lại của stack cũng mặc định trông chờ nó. Với Android hoặc các CLI cần ít dependency, hãy chọn Gson (jar nhỏ hơn) hoặc Moshi (hỗ trợ Kotlin tốt hơn). Cả ba đều xử lý được cùng một POJO; sự khác biệt nằm ở mức độ phù hợp với hệ sinh thái, không phải ở khả năng xử lý.
Làm sao để đổi tên field trong JSON đầu ra?
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>. Cả ba annotation này đều đặt ngay trên khai báo field.
Làm sao để bỏ qua các field null hoặc rỗng?
Jackson: đặt <code class="font-mono">@JsonInclude(JsonInclude.Include.NON_NULL)</code> trên class hoặc field. Gson: giá trị null bị loại bỏ mặc định — gọi <code class="font-mono">.serializeNulls()</code> trên builder nếu muốn giữ lại. Moshi: giá trị null cũng bị loại bỏ mặc định, trừ khi adapter được cấu hình với <code class="font-mono">.serializeNulls()</code>.
Vì sao POJO của tôi không serialize được — chỉ ra một object rỗng {}?
Jackson cần có public getter hoặc constructor mặc định cùng các field có thể truy cập được. Nếu dùng Lombok, hãy đảm bảo đã áp dụng <code class="font-mono">@Getter</code> (hoặc <code class="font-mono">@Data</code>). Với record (Java 16+), các accessor được tự động sinh ra.
Có thể chuyển POJO sang JSON mà không viết code Java không?
Không hẳn — việc serialize JSON phụ thuộc vào giá trị thực tế mà một instance Java đang giữ tại runtime, nên bạn cần có JVM chạy thật. Điều bạn có thể làm mà không cần viết code là: dựng sẵn POJO từ một mẫu JSON bằng công cụ <a class="underline" href="/json-to-java">JSON to Java POJO</a> của chúng tôi, sau đó áp dụng các công thức ở trên vào project của bạn.
Việc chuyển đổi này có làm mất dữ liệu không?
Không mất với kiểu nguyên thủy (primitive) và String. Một số kiểu Java cần adapter riêng: <code class="font-mono">LocalDateTime</code> (Jackson: đăng ký <code class="font-mono">JavaTimeModule</code>), độ chính xác của <code class="font-mono">BigDecimal</code> (Jackson: <code class="font-mono">USE_BIG_DECIMAL_FOR_FLOATS</code>), và giá trị <code class="font-mono">enum</code> (có thể cấu hình dùng <code class="font-mono">name()</code> hoặc <code class="font-mono">ordinal()</code>).
Cần chiều ngược lại?
Dán một mẫu JSON để nhận về class Java POJO đã định kiểu — theo phong cách Jackson, Lombok, hoặc record, với các class lồng nhau được tự động sinh ra.
Mở JSON to Java POJO →Chuyển đổi POJO sang JSON là gì?
Chuyển POJO sang JSON là quá trình lấy một instance Java — một Plain Old Java Object gồm field, getter, và setter — rồi serialize nó thành chuỗi JSON. Các thư viện tiêu chuẩn cho việc này là Jackson (`ObjectMapper.writeValueAsString(obj)`), Gson (`new Gson().toJson(obj)`), và Moshi (`moshi.adapter(MyType.class).toJson(obj)`). Mỗi thư viện sẽ reflect (soi) qua các field của object, áp dụng annotation nếu có (ví dụ `@JsonProperty`, `@SerializedName`), rồi sinh ra JSON hợp lệ.
Chuyển đổi POJO sang JSON là công cụ lập trình miễn phí của Zerethon Tools. Chuyển một instance POJO (Plain Old Java Object) của Java sang JSON bằng Jackson, Gson, hoặc Moshi. Các đoạn code sao chép-dán-là-chạy được, kèm công cụ chuyển ngược khi bạn cần dựng lại chính class POJO đó. Chạy hoàn toàn trong trình duyệt — không đăng ký, không tải lên.
- Danh mục
- Lập trình
- Giá
- Miễn phí
- Quyền riêng tư
- Chạy trên trình duyệt
- Đăng ký
- Không cần
Quyền riêng tư
Dữ liệu của bạn không bao giờ rời khỏi trình duyệt trừ khi được nêu rõ. Chuyển đổi POJO sang JSON chạy hoàn toàn phía client — không tải lên máy chủ, không ghi log, không theo dõi dữ liệu bạn nhập.
Công cụ liên quan
Trình định dạng JSON
Định dạng, kiểm tra và rút gọn JSON trực tuyến. Miễn phí, không cần đăng ký — dữ liệu không rời khỏi trình duyệt của bạn.
Mở công cụTrình định dạng SQL
Định dạng truy vấn SQL trực tuyến — làm đẹp mã cho MySQL, PostgreSQL, SQLite, SQL Server, Oracle và BigQuery.
Mở công cụTrình tạo UUID
Tạo UUID trực tuyến — v1, v4, v7 và Nil. Tạo hàng loạt tới 10.000. Miễn phí, không cần đăng ký.
Mở công cụTrình tạo mật khẩu
Tạo mật khẩu ngẫu nhiên mạnh, an toàn về mặt mật mã. Tùy chỉnh độ dài và bộ ký tự — chạy trong trình duyệt của bạn.
Mở công cụXây dựng, chia sẻ và phát triển trên Zerethon Social
Đăng ký miễn phí. Kiếm điểm, sưu tầm thành tựu và kết nối với nhà sáng tạo khắp thế giới.