JSON sang Java
Chuyển JSON thành Java POJO, DTO hoặc model class thật nhanh và đưa thẳng mã đã sinh vào IDE. Toàn bộ quá trình chạy cục bộ trong trình duyệt.
Đề xuất Liên quan
Công cụ JSON sang Java dùng để làm gì?
Công cụ JSON sang Java tự động phân tích cấu trúc JSON và biến nó thành các lớp Java POJO chuẩn. Nhờ đó bạn không phải viết tay package, import, field private, getter hay setter lặp đi lặp lại.
Điều này đặc biệt hữu ích trong Spring Boot, Android, MyBatis hoặc khi tích hợp API bên ngoài, nơi bạn thường cần biến ví dụ JSON thành model Java có thể dùng ngay. Các object lồng nhau được tách thành lớp riêng, còn mảng được suy ra thành `List<T>`.
Công cụ của GeekFormat hỗ trợ Gson, Jackson, Fastjson, Lombok, Serializable, Builder, chiến lược đặt tên trường và tải ZIP. Mã sinh ra có thể dán trực tiếp vào dự án.
Trường hợp sử dụng
- Biến JSON mẫu từ Spring Boot API thành DTO và VO
- Tạo JavaBean cho Android hoặc client Java từ API response
- Sinh nhanh model Jackson / Gson để tích hợp dịch vụ bên ngoài
- Dùng Lombok để tạo POJO ngắn gọn, giảm boilerplate
- Tách JSON lồng sâu thành các lớp Java dễ đọc và dễ bảo trì
- Tải cả bộ class bằng ZIP rồi import vào IDE
Cách Sử dụng
- Dán JSON vào bên trái, tải ví dụ hoặc nhập file `.json` / `.txt`
- Trong Settings, đặt tên lớp gốc, package, thư viện annotation, chiến lược đặt tên và các tùy chọn Lombok / Serializable
- Chờ tự động sinh mã hoặc bấm Convert để xem danh sách class Java ở bên phải
- Sao chép class cần dùng hoặc tải tất cả qua Download ZIP
Tính năng
- Hỗ trợ nhiều thư viện annotation: Gson, Jackson, Fastjson và Lombok
- Rút gọn với Lombok: có thể bật `@Data`, `@Builder` và constructor để giảm mã lặp
- Chiến lược đặt tên trường: giữ nguyên hoặc đổi snake_case sang camelCase theo chuẩn Java
- Tự sinh nested class: object lồng nhau trong JSON sẽ trở thành lớp Java riêng
- Mảng thành List<T>: công cụ tự suy luận kiểu phần tử cho mảng JSON
- Tùy chọn sinh thêm mã: `toString`, `equals`, `hashCode`, Serializable và constructor
- Tải ZIP nhiều file: có thể lưu hàng loạt file `.java` với cấu trúc package đầy đủ
- Xử lý cục bộ: phân tích JSON, sinh mã và đóng gói ZIP đều diễn ra trong trình duyệt
Ví dụ mã
Ví dụ suy luận kiểu Java từ giá trị JSON bằng JavaScript
javascriptfunction toJavaFieldType(value) {
if (value === null) return 'Object';
if (Array.isArray(value)) return 'List<Object>';
if (typeof value === 'number') return Number.isInteger(value) ? 'Integer' : 'Double';
if (typeof value === 'boolean') return 'Boolean';
if (typeof value === 'string') return 'String';
if (typeof value === 'object') return 'NestedType';
return 'Object';
}
console.log(toJavaFieldType({ id: 1 }.id));
// => IntegerVí dụ tạo field Java từ JSON bằng Python
pythonimport json
def java_type(value):
if value is None:
return 'Object'
if isinstance(value, bool):
return 'Boolean'
if isinstance(value, int):
return 'Integer'
if isinstance(value, float):
return 'Double'
if isinstance(value, str):
return 'String'
if isinstance(value, list):
return 'List<Object>'
if isinstance(value, dict):
return 'NestedType'
return 'Object'
sample = json.loads('{"name":"Alice","age":18}')
for key, value in sample.items():
print(f'private {java_type(value)} {key};')Ví dụ Lombok POJO sau khi sinh mã
javaimport lombok.Data;
import lombok.Builder;
@Data
@Builder
public class User {
private Integer id;
private String name;
}Câu hỏi Thường gặp
Làm thế nào để chuyển JSON thành Java POJO?
Dán JSON vào khung bên trái, công cụ sẽ tự động hoặc theo nút Convert tạo ra các lớp Java. Sau đó bạn có thể sao chép từng lớp hoặc tải toàn bộ dưới dạng ZIP.
Công cụ hỗ trợ những annotation nào?
Công cụ hỗ trợ `@SerializedName` cho Gson, `@JsonProperty` cho Jackson, `@JSONField` cho Fastjson, cùng các annotation Lombok như `@Data` và `@Builder`.
Object JSON lồng nhau sẽ được xử lý ra sao?
Mỗi object lồng nhau sẽ được tạo thành một lớp Java riêng, còn lớp cha sẽ giữ field tham chiếu tới kiểu đó. Nhờ vậy bạn có thể xử lý cấu trúc sâu dễ hơn.
Mảng có tự động thành List<T> không?
Có. Mảng chuỗi sẽ thành `List<String>`, mảng object có thể thành `List<User>`. Mảng rỗng thường được xem là `List<Object>`.
Có thể đổi snake_case sang camelCase không?
Có. Khi chọn chiến lược camelCase, `user_name` sẽ trở thành `userName`, trong khi tên khóa JSON gốc vẫn có thể được giữ trong annotation.
Mã ở chế độ Lombok trông như thế nào?
Khi bật Lombok, công cụ tạo lớp ngắn gọn hơn với `@Data`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor` thay cho getter và setter viết tay.
Kết quả có dùng được trong Spring Boot không?
Có. Nếu chọn Jackson hoặc Lombok, lớp sinh ra rất phù hợp cho DTO, request/response model và bean thông thường trong Spring Boot.
JSON của tôi có bị gửi lên máy chủ không?
Không. Mọi thao tác đều diễn ra cục bộ trong trình duyệt, nên bạn có thể yên tâm hơn khi làm việc với JSON nội bộ hoặc nhạy cảm.
Xử lý sự cố
Xuất hiện lỗi Invalid JSON
Hãy kiểm tra cú pháp JSON trước. Dấu phẩy thừa, dấu nháy đơn hoặc key chưa có dấu nháy có thể sửa bằng JSON Repair.
Kiểu mảng không được suy luận như mong muốn
Mảng rỗng hoặc mảng trộn nhiều kiểu thường trở thành `List<Object>`. Hãy đặt phần tử đại diện ở đầu mảng để kết quả chính xác hơn.
Tên field vẫn giữ nguyên snake_case
Có thể chiến lược đặt tên trong Settings vẫn là `asis`. Hãy đổi sang camelCase rồi sinh lại.
IDE không nhận ra mã Lombok
Bạn cần thêm dependency Lombok vào dự án và bật annotation processing hoặc plugin Lombok trong IDE.
JSON lớn tạo ra quá nhiều class
Với cấu trúc rất lớn, nên chia nhỏ JSON và sinh mã theo từng phần. Khi cần, hãy dùng nhiều lớp gốc khác nhau.
Thuật ngữ
- POJO
- Plain Old Java Object, tức object Java thông thường không phụ thuộc chặt vào framework, thường dùng làm model dữ liệu JSON.
- JavaBean
- Dạng class Java truyền thống với field private, getter/setter và thường có constructor rỗng.
- DTO
- Data Transfer Object, class dùng để truyền dữ liệu giữa các tầng, service hoặc API.
- Lombok
- Thư viện Java giúp sinh getter, setter, builder và mã lặp qua annotation.
- @JsonProperty
- Annotation của Jackson dùng để ánh xạ khóa JSON với field Java.
- @SerializedName
- Annotation của Gson dùng để giữ tên khóa JSON gốc khi ánh xạ sang field Java.
- Serializable
- Marker interface trong Java cho phép object được serialize để lưu trữ hoặc truyền tải.
- List<T>
- Kiểu collection generic phổ biến trong Java dùng để biểu diễn mảng JSON.
Ánh xạ kiểu JSON sang kiểu Java
| Giá trị JSON | Kiểu Java | Ghi chú |
|---|---|---|
"Alice" | String | Chuỗi thông thường |
18 | Integer | Số nguyên |
3.14 | Double | Số thực |
[{...}] | List<User> | Mảng object → List<T> |
Cách chọn thư viện annotation
| Thư viện | Annotation chính | Phù hợp khi |
|---|---|---|
Jackson | @JsonProperty | Mapping JSON mặc định trong Spring Boot |
Gson | @SerializedName | Android và serialize nhẹ |
Fastjson | @JSONField | Dự án Java đang dùng Fastjson |
Lombok | @Data / @Builder | POJO ngắn gọn, ít boilerplate |
Authoritative References
- Nén JSON
- CSV sang JSON
- JSON sang CSV
- JSON Diff
- JSON Escape / Unescape
- Làm phẳng JSON
- Trình định dạng JSON
- Trinh tao JSON
- Truy vấn JSONPath
- Gộp JSON
- Sửa JSON
- Trình Xác Thực JSON Schema
- Sắp xếp JSON
- JSON Stringify
- JSON sang HTML
- JSON sang Java
- JSON sang Markdown
- JSON sang SQL
- JSON sang TOML
- JSON sang TypeScript
- XML sang JSON
- Chuyen JSON sang XML
- YAML sang JSON
- JSON → YAML
- JSON sang Go
- JSON sang Rust
- JSON sang Swift
- JSON sang C#
- JSON sang C++
- JSON sang PHP
- JSON sang Python