Tool Kumar 도구

JSON을 Java 레코드로 변환

API 예시를 Jackson용 Java 레코드로 변환합니다. 루트는 하나의 public 레코드이고 중첩 레코드는 그 안에 들어 있으므로, 출력을 Root.java 하나로 저장할 수 있습니다.

도구 사용 방법

  1. 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
  2. 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
  3. 코드를 복사하거나 다운로드한 뒤, 타입이 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 생성기.