Chuyển JSON sang lớp Java (POJO hoặc Record)
Tạo POJO Java có getter, setter hoặc record Java 16 từ JSON, dùng @JsonProperty của Jackson cho khóa đặc biệt và lớp lồng static. Miễn phí.
Kiểu lồng nhau thành lớp lồng static. Khóa không phải tên Java hợp lệ được gắn @JsonProperty (Jackson).
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Công cụ Liên quan
Xem Tất cảJSON sang lớp Java là gì?
Tạo các lớp model Java từ một mẫu JSON, dưới dạng POJO truyền thống với trường private, getter và setter hoặc record Java gọn nhẹ. Đối tượng lồng nhau trở thành lớp lồng static (hoặc record lồng nhau) bên trong kiểu gốc.
Cách sử dụng JSON sang lớp Java
- Dán mẫu JSON vào ô JSON đầu vào (hoặc nhấn Tải ví dụ / Mở tệp).
- Đặt Tên kiểu gốc (mặc định là
Root). - Chọn Kiểu đầu ra: Lớp có getter/setter (Jackson) hoặc Record (Java 16 trở lên).
- Sao chép mã Java được tạo ra hoặc nhấn Tải xuống để lưu thành tệp.
Ví dụ
{"id":1,"name":"A","tags":["x"]} import java.util.List;
public class Root {
private long id;
private String name;
private List<String> tags;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public List<String> getTags() { return tags; }
public void setTags(List<String> tags) { this.tags = tags; }
} Khi nào nên dùng JSON sang lớp Java
Dùng để tạo khung DTO cho mã Spring, Jackson hoặc Gson. Hãy tự điều chỉnh các kiểu như ngày tháng (LocalDate, Instant) và enum, và tách lớp lồng nhau ra tệp riêng nếu codebase của bạn ưu tiên cách đó.
JSON sang lớp Java hoạt động như thế nào
Mẫu JSON được duyệt đệ quy và mỗi vị trí ghi nhận các kiểu dữ liệu đã gặp. Mảng đối tượng được gộp thành một kiểu: khóa thiếu ở một số phần tử trở thành tùy chọn, khóa có giá trị null ở đâu đó trở thành nullable, số nguyên trộn với số thập phân trở thành kiểu số thực, và mọi trường hợp trộn kiểu khác sẽ dùng kiểu động. Đối tượng lồng nhau trở thành kiểu có tên riêng (tên khóa viết PascalCase, khóa mảng được chuyển về số ít: orders → Order), kèm hậu tố số khi trùng tên. Đầu ra Java dùng kiểu nguyên thủy long/double/boolean cho giá trị bắt buộc và kiểu bao Long/Double/Boolean cho giá trị nullable hoặc tùy chọn, String, List<T> cho mảng và Object cho giá trị động. Tên trường viết camelCase; khi khác với khóa JSON, chú thích Jackson @JsonProperty("key") được thêm vào và câu lệnh import cũng được tự động bổ sung.
Các Trường Hợp Sử Dụng Phổ Biến
- Tạo DTO cho REST client Spring Boot
- Mô hình hóa thông điệp JSON cho consumer Kafka
- Tạo record cho cấu hình bất biến
- Tạo nhanh fixture kiểm thử trong Java
Câu Hỏi Thường Gặp
Tôi có cần Jackson không?
Chỉ khi có khóa không phải tên Java hợp lệ; khi đó @JsonProperty được dùng. Nếu không, các lớp là Java thuần và cũng chạy được với Gson.
Vì sao dùng long thay vì int?
Số JSON có thể vượt phạm vi int (ID, timestamp). long tránh được lỗi tràn; hãy đổi sang int nếu bạn biết giá trị nhỏ.
Record có dùng được với Jackson không?
Có, Jackson 2.12 trở lên deserialize record Java thông qua constructor chuẩn (canonical constructor) của chúng.