- 왼쪽 입력창에 변환할 JSON 객체를 붙여넣습니다. 중첩 객체나 배열이 있어도 자동으로 분석됩니다.
- 루트 클래스명을 원하는 이름으로 입력합니다(기본값: Root).
- Lombok @Data 옵션을 켜면 getter/setter/toString 코드 없이 어노테이션 방식으로 생성됩니다.
- "변환" 버튼을 누르면 오른쪽에 Java 코드가 생성됩니다.
- 복사 버튼으로 결과를 클립보드에 저장해 IDE에 붙여넣습니다.
DTO(Data Transfer Object)는 계층 사이에서 데이터를 실어 나르기 위한 단순한 클래스입니다. API로 받은 JSON을 자바 객체로 받을 때, 응답 모양과 똑같은 필드를 가진 DTO가 있으면 Jackson 같은 라이브러리가 알아서 값을 채워 줍니다. 이 클래스를 손으로 적는 일이 의외로 번거로운데, 그 작업을 JSON 한 번 붙여넣기로 끝내는 것이 이 도구의 역할입니다.
- 매핑 자동화: 응답 JSON의 키와 DTO 필드 이름이 맞으면 역직렬화가 자동으로 됩니다.
- 중첩 구조 반영: 객체 안의 객체는 static inner class로 만들어 계층을 그대로 옮깁니다.
- 이름 규칙 변환: JSON의 snake_case 키를 자바 관례인 camelCase 필드로 바꿔 줍니다.
API 응답을 DTO로 매핑하는 흐름은 JSON→DTO 가이드에서 더 자세히 다룹니다.
- snake_case 자동 변환: JSON의 snake_case 키(예: user_name)는 Java camelCase(userName)로 자동 변환됩니다. Jackson 사용 시 @JsonProperty("user_name") 어노테이션이 필요하면 변환 후 직접 추가하세요.
- 중첩 객체 처리: 중첩 객체는 static inner class로 생성됩니다. 여러 클래스에서 재사용하는 공통 타입이라면 inner class를 별도 파일로 분리하는 것이 좋습니다.
- null 값 주의: JSON에서 null 값이 있는 필드는 타입을 추론할 수 없어 Object 타입으로 생성됩니다. 실제 타입을 알고 있다면 생성 후 수동으로 수정하세요.
이 도구는 최상위가 객체(중괄호로 시작하는 JSON)인 경우를 기준으로 동작합니다. 데이터가 객체들의 배열이라면 배열 안 첫 번째 객체만 떼어 입력하면 그 구조로 DTO가 생성되고, 실제 코드에서는 그 DTO를 원소로 하는 리스트 타입(자바의 List 제네릭)으로 선언해 받으면 됩니다.
참고용 코드입니다. 패키지 선언, import 구문, 유효성 검증 어노테이션(예: NotNull)은 포함되지 않으므로 프로젝트에 맞게 수정 후 사용하세요.
배열의 첫 번째 원소를 기준으로 타입을 추론합니다. 원소 타입이 서로 다른 혼합 배열은 모든 타입을 담을 수 있는 Object를 원소로 하는 리스트 타입으로 생성되므로, 실제 의도한 타입이 있다면 생성 후 직접 바꿔 주세요.
Lombok 옵션을 끄면 어노테이션 대신 각 필드의 getter와 setter 메서드를 직접 풀어서 생성합니다. 프로젝트에 Lombok 의존성을 추가하지 않거나, 생성되는 메서드를 눈으로 확인하고 싶을 때 끄면 됩니다. 반대로 옵션을 켜면 Data 어노테이션 한 줄로 getter, setter, toString 등이 자동으로 만들어진다고 가정한 간결한 코드가 나옵니다.
JSON에는 날짜나 금액을 위한 별도 타입이 없어서, 보통 문자열이나 숫자로 들어옵니다. 그래서 날짜 문자열은 String으로, 금액은 정수면 Integer, 소수면 Double로 추론됩니다. 실제로는 LocalDate나 BigDecimal처럼 더 알맞은 타입을 쓰는 경우가 많으므로, 생성된 코드에서 해당 필드의 타입과 import를 직접 바꿔 마무리하는 것을 권합니다.