Chuyển tới nội dung chính
Z

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 đó.

Miễn phí Không cần đăng ký Chạy trên trình duyệt Tôn trọng riêng tư Updated
Lưu ý: POJO → JSON là một quá trình cần có JVM đang chạy (để trình serialize đọc được giá trị field thực tế). Các công thức bên dưới chạy trong chính ứng dụng của bạn; trang này chỉ mang tính tham khảo nhanh. Cần chiều ngược lại — chuyển JSON sang class Java POJO? Dùng JSON to Java 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

Chuyển đổi POJO sang JSON so với các công cụ trình duyệt và máy tính thông thường — so sánh nhanh các tính năng.
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ệ.

Tóm tắt

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

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.

Dùng thử Zerethon miễn phí