JSON을 Java로

JSON 데이터를 Java POJO나 DTO로 빠르게 바꾸고, 어노테이션이 포함된 클래스 코드를 그대로 IDE로 가져갈 수 있습니다. 모든 처리는 브라우저 안에서 끝납니다.

관련 추천

JSON to Java 변환기란 무엇인가요?

JSON to Java 변환기는 JSON 구조를 분석해 표준 Java POJO 클래스로 자동 변환해 주는 개발 도구입니다. package, import, private 필드, getter, setter를 손으로 반복 작성하는 부담을 크게 줄여 줍니다.

특히 Spring Boot, Android, MyBatis, 사내 API 연동 같은 환경에서는 샘플 JSON을 받아 곧바로 Java 모델로 바꾸고 싶은 경우가 많습니다. 이 도구는 중첩 객체를 별도 클래스로 나누고 배열은 `List<T>` 로 추론합니다.

GeekFormat 의 JSON to Java 도구는 Gson, Jackson, Fastjson, Lombok 전환, Serializable, Builder, 필드 명명 전략, ZIP 일괄 다운로드를 지원하며 생성 코드를 그대로 IDE에 붙여 넣어 사용할 수 있습니다.

사용 사례

  • Spring Boot 의 샘플 JSON 을 DTO, VO, Entity 로 변환하기
  • Android 나 Java 클라이언트용 JSON 응답을 JavaBean 으로 생성하기
  • 사내 시스템 연동 JSON 을 Jackson / Gson 모델 클래스로 바꾸기
  • Lombok 기반의 짧은 POJO 를 만들어 코드 리뷰 가독성을 높이기
  • 복잡한 중첩 JSON 을 여러 Java 클래스로 분해해 설계를 파악하기
  • ZIP 으로 묶어 다운로드한 뒤 IDE 에 일괄 가져오기

이용 방법

  1. 왼쪽에 JSON 을 붙여 넣거나 샘플을 불러오거나 `.json` / `.txt` 파일을 업로드합니다
  2. Settings 에서 루트 클래스명, package 명, 어노테이션 라이브러리, 명명 전략, Lombok / Serializable 여부를 설정합니다
  3. 자동 변환 또는 Convert 실행 후 오른쪽에 생성된 Java 클래스 목록을 확인합니다
  4. 필요한 클래스를 개별 복사하거나 Download ZIP 으로 한꺼번에 저장합니다

주요 기능

  • 여러 어노테이션 라이브러리 지원: Gson, Jackson, Fastjson, Lombok 모드를 선택할 수 있습니다
  • Lombok 간소화: `@Data`, `@Builder`, 생성자 조합으로 POJO 코드를 짧게 만들 수 있습니다
  • 명명 전략 선택: snake_case 를 camelCase 로 바꾸는 등 Java 스타일에 맞게 필드명을 조정합니다
  • 중첩 클래스 자동 생성: 중첩된 JSON 객체를 별도 Java 클래스로 분리합니다
  • 배열을 List<T> 로 변환: JSON 배열을 Java 제네릭 List 타입으로 추론합니다
  • Serializable 및 메서드 생성: `toString`, `equals`, `hashCode`, 생성자 출력 여부를 고를 수 있습니다
  • ZIP 일괄 다운로드: 생성된 여러 `.java` 파일을 패키지 구조와 함께 저장할 수 있습니다
  • 로컬 브라우저 처리: JSON 파싱, 코드 생성, ZIP 패키징이 모두 브라우저 안에서 수행됩니다

코드 예제

JavaScript로 JSON 값을 Java 필드 타입으로 추론하는 예시

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

Python에서 JSON 키로 Java 필드를 만드는 예시

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};')

생성 후 바로 쓸 수 있는 Lombok POJO 예시

java
import lombok.Data;
import lombok.Builder;

@Data
@Builder
public class User {
    private Integer id;
    private String name;
}

자주 묻는 질문

JSON을 Java POJO로 어떻게 변환하나요?

JSON 을 입력창에 붙여 넣으면 자동 또는 수동 실행으로 Java 클래스가 생성됩니다. 오른쪽의 각 클래스를 복사하거나 ZIP 파일로 한꺼번에 다운로드할 수 있습니다.

어떤 어노테이션 라이브러리를 지원하나요?

Gson 의 `@SerializedName`, Jackson 의 `@JsonProperty`, Fastjson 의 `@JSONField`, Lombok 의 `@Data`, `@Builder` 등을 지원합니다. 프로젝트에 맞게 전환해서 사용할 수 있습니다.

중첩된 JSON 객체는 어떻게 처리되나요?

중첩 객체는 별도의 Java 클래스로 생성되고 부모 클래스가 해당 타입을 참조합니다. 깊은 구조도 여러 POJO 클래스로 나누어 다룰 수 있습니다.

배열은 자동으로 List<T> 가 되나요?

네. 문자열 배열은 `List<String>`, 객체 배열은 `List<User>` 처럼 요소 타입을 추론합니다. 빈 배열은 기본적으로 `List<Object>` 로 처리됩니다.

snake_case 를 camelCase 로 바꿀 수 있나요?

가능합니다. 명명 전략에서 camelCase 를 선택하면 `user_name` 을 `userName` 으로 바꾸고, 필요하면 어노테이션에는 원래 JSON 키를 유지합니다.

Lombok 모드에서는 어떤 코드가 생성되나요?

Lombok 을 켜면 getter, setter 를 생략하고 `@Data`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor` 같은 어노테이션 중심의 짧은 클래스를 생성합니다.

생성된 코드를 Spring Boot 프로젝트에서 사용할 수 있나요?

네. Jackson 또는 Lombok 을 선택하면 Spring Boot 의 DTO, VO, request / response 모델로 바로 활용하기 좋은 형식으로 생성됩니다.

JSON 데이터가 서버로 업로드되나요?

아니요. 모든 처리가 브라우저 안에서만 이루어지므로 내부 API 나 민감한 샘플 JSON 도 비교적 안심하고 사용할 수 있습니다.

문제 해결

Invalid JSON 오류가 발생합니다

먼저 JSON 문법을 확인하세요. 끝 쉼표, 작은따옴표, 따옴표 없는 key 등은 JSON Repair 도구로 수정할 수 있습니다.

배열 타입이 기대와 다르게 추론됩니다

빈 배열이나 타입이 섞인 배열은 `List<Object>` 로 추론되기 쉽습니다. 대표적인 요소를 앞에 두면 결과가 더 안정적입니다.

snake_case 필드가 그대로 생성됩니다

Settings 의 명명 전략이 `asis` 일 수 있습니다. camelCase 로 바꾼 뒤 다시 생성해 보세요.

Lombok 코드가 IDE 에서 인식되지 않습니다

프로젝트에 Lombok 의존성을 추가하고 IDE 에서 Lombok 플러그인 또는 annotation processing 을 활성화해야 합니다.

큰 JSON 때문에 클래스 수가 너무 많습니다

아주 큰 JSON 은 구조별로 나누어 변환하면 검토가 쉬워집니다. 필요하면 루트 클래스를 분리해 여러 번 생성하세요.

용어집

POJO
프레임워크에 강하게 의존하지 않는 일반적인 Java 객체입니다. JSON 모델 클래스로 널리 쓰입니다.
JavaBean
private 필드, getter, setter, 기본 생성자를 갖춘 전통적인 Java 클래스 형식입니다.
DTO
Data Transfer Object 의 약자로, API 나 서비스 간 데이터 전달용 클래스입니다.
Lombok
getter, setter, builder 같은 반복 코드를 어노테이션으로 자동 생성하는 Java 라이브러리입니다.
@JsonProperty
Jackson 에서 JSON 키와 Java 필드를 매핑할 때 쓰는 어노테이션입니다.
@SerializedName
Gson 에서 원래 JSON 키 이름을 유지하면서 Java 필드와 연결하는 어노테이션입니다.
Serializable
Java 객체를 직렬화 가능하게 만드는 마커 인터페이스입니다.
List<T>
Java 에서 배열성 데이터를 표현할 때 많이 쓰는 제네릭 컬렉션 타입입니다.

JSON 타입과 Java 타입 매핑

JSON 값Java 타입설명
"Alice"String일반 문자열로 생성
18Integer정수는 Integer 로 추론
3.14Double소수는 Double 로 추론
[{...}]List<User>객체 배열은 List<T>

어노테이션 라이브러리 선택 가이드

라이브러리대표 어노테이션주요 사용처
Jackson@JsonPropertySpring Boot 기본 JSON 매핑
Gson@SerializedNameAndroid 및 경량 JSON 처리
Fastjson@JSONFieldFastjson 기반 기존 Java 프로젝트
Lombok@Data / @Builder반복 코드를 줄인 간결한 POJO

Authoritative References