Tool Kumar 도구
JSON을 Java 레코드로 변환
API 예시를 Jackson용 Java 레코드로 변환합니다. 루트는 하나의 public 레코드이고 중첩 레코드는 그 안에 들어 있으므로, 출력을 Root.java 하나로 저장할 수 있습니다.
도구 사용 방법
- 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
- 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
- 코드를 복사하거나 다운로드한 뒤, 타입이 API 명세와 맞는지 확인합니다.
사용 예제
내장 변환기가 생성한 출력입니다. 두 항목의 price 값에서는 부동소수점 필드가, null과 문자열인 note 값에서는 null 허용 필드가 추론됩니다.
입력
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}출력
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public record Root(
@JsonProperty("user-id") long userId,
Profile profile,
List<Item> items
) {
public record Profile(String city, @JsonProperty("created_at") String createdAt) {}
public record Item(double price, String note) {}
}
Jackson으로 레코드 사용하기
기본 출력을 Root.java로 저장합니다. Jackson은 JSON 속성으로 레코드 컴포넌트를 구성합니다. Item 같은 중첩 레코드는 Root.Item으로 사용할 수 있습니다.
출력에는 package 선언이 없으므로 애플리케이션에서 쓰는 패키지를 추가합니다. 날짜를 java.time 타입으로 바꾼다면 평소 쓰는 Jackson 모듈을 등록합니다.
import com.fasterxml.jackson.databind.ObjectMapper;
Root model = new ObjectMapper().readValue(responseBody, Root.class);옵션 및 예외 사항
- setter가 있는 변경 가능한 POJO 대신 레코드를 생성합니다. Java 16 이상과, 2.12 이상처럼 레코드를 지원하는 Jackson 버전을 사용해야 합니다.
- 이름이 바뀌었거나 예약어인 레코드 컴포넌트에는 원래 키를 담은 @JsonProperty가 붙습니다. 중첩 객체 배열은 List<Item>이 됩니다.
- 정수는 long, 부호 있는 64비트 범위를 넘는 큰 정수는 BigInteger, 소수는 double을 사용합니다. null 허용 기본형에는 Long 같은 박싱 타입을 사용합니다.
- null로만 관찰되거나 타입이 섞인 필드는 Object를 사용하고, 날짜는 String으로 남습니다. 정확한 소수 연산이 중요하다면 BigDecimal과 검토를 거친 매핑을 사용합니다.
개인정보 보호 기본 적용
문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.
JSON을 Java 레코드로 변환 자주 묻는 질문
- JSON을 Java로 변환하면 POJO가 생성되나요?
- 불변 Java 레코드를 생성합니다. Java 8 POJO, setter, 인수 없는 생성자가 필요하다면 출력을 고치거나 그런 모델 스타일에 맞는 생성기를 사용합니다.
- 어떤 JSON 라이브러리를 대상으로 하나요?
- Jackson입니다. Java 컴포넌트 이름과 다른 키를 보존해야 할 때 변환기가 @JsonProperty를 import합니다.
- 중첩 타입을 모두 한 파일에 저장할 수 있나요?
- 네. public 루트 레코드 안에 중첩된 public 레코드가 들어 있으므로, 객체를 입력했을 때의 기본 출력은 Root.java 하나에 담깁니다.
- 레코드는 어떻게 역직렬화하나요?
- Jackson의 레코드 지원과 함께 ObjectMapper.readValue(responseBody, Root.class)를 사용합니다. API에 맞게 날짜 처리와 숫자 한계를 검토합니다.
관련 도구
JSON을 Kotlin 데이터 클래스로 변환, JSON을 C# 클래스로 변환 및 JSON Schema 생성기.