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

  1. Dán JSON vào bên trái, tải ví dụ hoặc nhập file `.json` / `.txt`
  2. 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
  3. Chờ tự động sinh mã hoặc bấm Convert để xem danh sách class Java ở bên phải
  4. 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

javascript
function 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));
// => Integer

Ví dụ tạo field Java từ JSON bằng Python

python
import 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ã

java
import 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ị JSONKiểu JavaGhi chú
"Alice"StringChuỗi thông thường
18IntegerSố nguyên
3.14DoubleSố thực
[{...}]List<User>Mảng object → List<T>

Cách chọn thư viện annotation

Thư việnAnnotation chínhPhù hợp khi
Jackson@JsonPropertyMapping JSON mặc định trong Spring Boot
Gson@SerializedNameAndroid và serialize nhẹ
Fastjson@JSONFieldDự án Java đang dùng Fastjson
Lombok@Data / @BuilderPOJO ngắn gọn, ít boilerplate

Authoritative References