타입 생성

JSON을 Java로응답 샘플에서 모델 초안 만들기

배열 입력은 요소 모델을 생성합니다. 배열 전체를 읽을 때는 List<Root>를 사용하세요.

JSON을 Java로

JSON 입력

파싱과 생성은 브라우저에서 수행합니다. 입력은 전송하거나 저장하지 않습니다.

생성된 소스

생성 옵션

Jackson 2.x용입니다. Kotlin 모듈도 필요합니다. 타입 추론은 검증이 아니며 아래 디코더 설정을 확인하세요.

배열 입력: 요소 모델을 생성합니다. List<Root>으로 읽으세요.

클래스 2개 · nullable 필드 2개

API 응답만 있고 모델 정의가 없다면 JSON을 Java로 변환해 초안을 만들 수 있습니다. 여러 객체를 배열로 제공하면 첫 레코드에 없던 필드와 null도 타입 결정에 반영됩니다.

이 JSON 변환기는 실제 계약을 대신하지 않습니다. Java 클래스 생성 결과에서 필수 항목과 향후 가능한 값은 API 명세를 보고 다시 확인해야 합니다.

JSON을 Java로 변환하는 이유

첫 샘플 이후의 필드도 포함

JSON을 Java로 변환할 때 같은 배열 위치의 모든 객체를 합칩니다. 나중에 등장한 필드도 남기며, 누락이나 null을 관찰하면 nullable 타입으로 넓힙니다.

서로 다른 필드가 있는 두 카드가 하나의 모델로 합쳐지고 빈 표시가 누락된 값을 나타내는 그림.

원래 키를 유지하는 매핑

기호나 예약어가 있는 키를 안전한 속성명으로 바꾼 뒤 Jackson 어노테이션으로 원래 이름과 연결합니다. 같은 이름이 만들어지면 숫자 접미사를 붙여 구분합니다.

불규칙한 키가 같은 색 연결선을 따라 안전한 필드와 중첩 클래스에 대응하는 그림.

샘플과 옵션을 먼저 확인하세요

01

차이가 있는 레코드 준비

루트는 객체 또는 객체만 들어 있는 비어 있지 않은 배열이어야 합니다. 배열은 요소 모델로 합쳐지며, 데이터에 없는 래퍼 필드는 만들지 않습니다. 내부 배열은 재귀적으로 추론합니다.

02

nullable과 클래스 위치 선택

관찰 모드는 누락되거나 null인 필드만 넓힙니다. 전체 모드는 Java 기본형을 박싱하고 Kotlin 속성에 ?와 null 기본값을 추가합니다. 중첩을 끄면 보조 클래스가 같은 파일의 최상위에 놓입니다.

03

현재 결과만 내보내기

자동 생성은 350ms 뒤 실행합니다. 끄면 생성 버튼이나 Ctrl/Cmd+Enter를 사용할 수 있습니다. 편집 즉시 내보내기가 중지되고, 지우기와 예제 불러오기는 입력·옵션·결과를 한 번 되돌릴 수 있습니다.

필드와 타입을 결정하는 기준

정확한 숫자 선택

부호 있는 64비트 범위의 일반 정수는 long/Long, 더 큰 정수는 BigInteger가 됩니다. 1.0이나 1e3 같은 소수·지수 표기는 BigDecimal을 사용하며 JavaScript 부동소수점을 거치지 않습니다.

Kotlin 생성자

같은 화면에서 Kotlin data class로 전환합니다. 누락 또는 null이 있는 속성은 T? = null, 나머지는 기본값 없이 생성합니다. 빈 루트 객체는 매개변수가 없는 일반 class입니다.

이름 충돌 방지

ASCII camelCase 이름과 일정한 숫자 접미사를 사용합니다. Java 필드, Kotlin 생성자 매개변수와 getter에 각각 JsonProperty가 붙습니다. 완전 수식 타입명으로 루트 이름 String이나 List와의 충돌도 피합니다.

소스 파일 하나

기본 Java 출력은 public 필드와 static 중첩 클래스입니다. Kotlin은 중첩 데이터 클래스를 사용합니다. 중첩을 끄면 Java 보조 클래스는 public이 아닌 최상위 클래스가 되어 여전히 한 파일로 컴파일할 수 있습니다.

호환성과 추론 한계

Jackson 설정 필요
어노테이션은 Jackson 2.x용입니다. Kotlin에는 jackson-module-kotlin과 kotlin-reflect도 필요합니다. null 검사에는 FAIL_ON_NULL_FOR_PRIMITIVES와 StrictNullChecks를 설정하세요. Java 참조형은 여전히 null을 담을 수 있습니다.
알 수 없는 타입
혼합 값과 null만 있는 필드는 Object/Any, 빈 내부 객체는 Map입니다. 빈 배열에는 요소 타입 근거가 없습니다. 동적 위치의 숫자 정밀도는 USE_BIG_INTEGER_FOR_INTS와 USE_BIG_DECIMAL_FOR_FLOATS를 켜야 유지됩니다. 빈 루트 클래스 직렬화 시 FAIL_ON_EMPTY_BEANS도 끄세요.
표현할 수 없는 키
빈 JsonProperty 이름은 기본 이름을 뜻하므로 빈 JSON 키는 거부합니다. 어노테이션을 끈 상태에서 이름 변경이 필요한 키도 오류입니다. Map이나 직접 작성한 디코더로 처리해야 합니다.
샘플 추론 범위
JSON Schema, OpenAPI, Lombok, record, Gson, 날짜·열거형 추론은 제공하지 않습니다. 문자열은 문자열로 유지합니다. 루트 스칼라·빈 배열·혼합 배열은 거부하며 누락과 명시적 null을 별도 상태로 구분하지 않습니다.
입력 예산
주석, 중복 키, 복구, URL 가져오기와 파일 입력은 지원하지 않습니다. 한도는 입력 500,000자, 50,000노드, 깊이 40, 객체당 100필드, 200클래스, 키·숫자 토큰 각각 1,000자, 지수 절댓값 10,000, 출력 1,000,000자입니다.

JSON을 Java로 변환할 때 자주 묻는 질문

Spring Boot 프로젝트에서 쓸 수 있나요?

JSON을 Java로 생성한 클래스는 Jackson 2.x 기반 프로젝트에 넣을 수 있습니다. 패키지 선언과 의존성은 프로젝트에서 추가하세요. Kotlin 모듈과 null 설정도 확인해야 하며, Spring Boot의 모든 버전에 맞춘 설정 파일을 만들지는 않습니다.

객체 배열도 처리하나요?

네. 비어 있지 않은 객체 배열의 모든 요소를 병합합니다. 생성 파일은 요소 클래스이므로 배열 응답을 읽을 때 List<Root> 타입을 지정하세요.

데이터는 안전한가요?

입력은 현재 브라우저에서 파싱하고 소스로 변환합니다. 서버에 보내거나 저장하지 않으며 원격 URL 읽기나 샘플 공유 링크도 제공하지 않습니다.

숫자는 어떤 타입이 되나요?

일반 정수는 범위에 따라 long/Long 또는 BigInteger입니다. 소수와 지수 표기는 BigDecimal입니다. Object/Any에 들어가는 숫자는 별도의 Jackson 정밀도 옵션을 켜세요.

필드가 Object로 나온 이유는 무엇인가요?

같은 위치의 샘플 타입이 서로 다르거나 null만 있기 때문입니다. 충분한 근거 없이 타입을 추측하지 않고 넓은 타입을 남깁니다. 계약을 확인한 뒤 모델을 구체화하세요.

추론 사례를 개선하고 싶으신가요?

프로젝트에서 모델 검증하기

JSON을 Java로 변환한 뒤 nullable 필드와 키 매핑을 검토하세요. 실제 프로젝트에서 Jackson 설정을 적용하고 저장한 소스를 컴파일해 확인하세요.