JSON 자바 클래스 변환기
JSON을 자바 record, getter·setter가 있는 POJO, Lombok @Data 클래스로 변환합니다. 중첩 클래스, List<> 타입, Jackson @JsonProperty 이름을 지원합니다.
타입 추론은 JavaScript 숫자를 사용하므로 정수 샘플은 ±9,007,199,254,740,991 범위 안이어야 합니다. 더 큰 식별자나 정확한 소수 값은 문자열로 쓰세요.
record는 Java 16 이상이 필요하며, Jackson 2.12 이상에서는 별도 설정 없이 읽을 수 있습니다.
Jackson 2.x 애노테이션은 com.fasterxml.jackson.core:jackson-annotations에 들어 있습니다. POJO와 Lombok 모델은 JSON 바인딩에 필드를 사용하므로 getter 이름 때문에 키가 중복되는 일이 없습니다.
사용법: User obj = new ObjectMapper().readValue(json, User.class);
JSON 샘플을 붙여 넣으면 Jackson이 바로 읽을 수 있는 자바 클래스를 만들어 줍니다. 간결한 record(Java 16 이상), getter와 setter가 있는 전통적인 POJO, Lombok @Data 클래스 중에서 고를 수 있습니다. 중첩 객체는 붙여 넣기만 하면 되는 파일 하나 안의 중첩 static 클래스가 되고, 배열은 List<…>가 되며, 자바 이름으로 쓸 수 없는 키는 camelCase로 바뀌면서 원래 키를 유지하는 @JsonProperty 애노테이션이 붙습니다.
사용 방법
- JSON 객체를 붙여 넣습니다. 샘플 여러 개를 합치려면 객체 목록을 붙여 넣으세요.
- 루트 클래스 이름을 정하고, 필요하면 패키지도 입력합니다.
- record, POJO, Lombok 중에서 고릅니다.
- 키가 snake_case, 대시 등 자바 이름이 아닌 형태라면 Jackson 애노테이션을 켜 둡니다.
계산식
string → String · 정수 → int(−2,147,483,648…2,147,483,647 밖이면 long) · 소수 → double · true/false → boolean · 객체 → 중첩 클래스 · 배열 → List<항목 타입> · null 또는 없음 → Integer, Double, Boolean · 섞임 → Object
기본형은 null을 담을 수 없으므로 어떤 샘플에서든 null이거나 없는 키는 래퍼 타입이 됩니다. 필드 이름은 camelCase입니다. user_name은 userName이 되고, 자바 키워드에는 접미사가 붙어 class는 classValue가 됩니다. 자바 이름이 키와 다르거나 두 번째 글자가 대문자여서 Jackson의 getter 이름 규칙이 키를 바꿔 버리는 경우에 @JsonProperty가 추가됩니다. 숫자 추론은 JavaScript 숫자를 사용하므로 정수 샘플은 ±9,007,199,254,740,991 범위 안이어야 하며, 더 큰 식별자나 정확한 소수는 문자열로 쓰세요. Jackson을 켜면 POJO/Lombok 모델은 getter 별칭 때문에 키가 중복되지 않도록 필드에 직접 바인딩합니다. 빈 JSON 키는 먼저 이름을 바꿔야 합니다.
예시
기본 샘플에서 클래스 3개와 필드 16개가 만들어집니다. User와 중첩된 Address, Order입니다. "id": 1024는 int id, "balance": 1520.75는 double balance, "tags"는 List<String> tags가 됩니다. 두 주문 모두 total이 있고 59.9는 소수이므로 double total입니다. order_id는 orderId로 바뀌며 @JsonProperty("order_id")가 붙고, "lastLogin": null은 null만으로는 타입을 알 수 없어 Object lastLogin이 됩니다.
자주 묻는 질문
record, POJO, Lombok 중 무엇을 써야 하나요?
record는 Java 16 이상과 Jackson 2.12 이상이 필요합니다. POJO는 getter와 setter를 직접 만듭니다. Lombok @Data는 컴파일할 때 접근자를 만들며 의존성과 애노테이션 프로세서가 필요합니다. 생성되는 Jackson 애노테이션은 Jackson 2.x 패키지를 사용합니다.
어떤 곳은 int이고 어떤 곳은 Integer인 이유는 무엇인가요?
기본형 int는 null이 될 수 없습니다. 어떤 샘플에서든 키가 null이거나 없으면 값이 없을 때 조용히 0이 되지 않고 null로 남도록 Integer를 사용합니다.
isActive의 getter 이름이 isIsActive()인 이유는 무엇인가요?
POJO 모드에서 기본형 boolean의 getter는 is에 필드 이름 전체를 붙이므로 isIsActive()가 됩니다. Lombok은 isActive를 active 속성으로 줄일 수 있으며, Jackson 애노테이션을 켜 두면 생성된 별칭이 JSON 키를 보존합니다.
Gson과 함께 쓸 수 있나요?
이름이 일치하는 경우에는 쓸 수 있습니다. Gson은 필드를 직접 읽고 자체 @SerializedName 애노테이션을 사용하므로, Jackson 애노테이션을 끄고 이름이 바뀐 필드에 @SerializedName을 추가하세요.
출처
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/json-to-java-class-tool/
인용·퍼가기
kakaoCalc. (2026, November 8). JSON 자바 클래스 변환기. https://kakao.mobile/ko/tools/json-to-java-class-tool/
“JSON 자바 클래스 변환기.” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/json-to-java-class-tool/.