JSON을 Java 클래스로 변환
JSON에서 Java 클래스를 생성합니다. 페이지에서 json_typegen(WebAssembly)을 Kotlin 모드로 실행한 뒤, 각 data class를 private 필드, 전체 인자 생성자, getter와 setter를 가진 Java 클래스로 다시 작성합니다.
Jackson으로 REST 응답을 역직렬화할 POJO를 만들 때.
이럴 때 사용하세요
- Jackson으로 REST 응답을 역직렬화할 POJO를 만들 때.
- 예시 페이로드로 Spring 컨트롤러용 DTO 클래스 초안을 잡을 때.
사용 방법
- 왼쪽 편집기에 JSON 객체나 배열을 붙여 넣습니다.
- 생성된 클래스를 확인합니다. 루트는 Root이고, 중첩 객체는 키 이름을 딴 별도 클래스가 됩니다.
- 각각 별도의 .java 파일에 복사하고(List와 Jackson import 포함) 필요하면 타입을 조정합니다.
JSON
{
"id": 42,
"user_name": "ada",
"active": true,
"tags": ["admin", "editor"]
}Java 클래스
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Root {
private Long id;
@JsonProperty("user_name")
private String userName;
private Boolean active;
private List<String> tags;
public Root(Long id, String userName, Boolean active, List<String> tags) {
this.id = id;
this.userName = userName;
this.active = active;
this.tags = tags;
}
public Long getId() {
return this.id;
}
…세부 정보 및 제한 사항
생성은 브라우저에서 WebAssembly로 실행되며 설정은 없습니다.
snake_case 키는 Jackson @JsonProperty가 붙은 camelCase 필드가 됩니다. Jackson과 java.util.List는 사용할 때 import됩니다.
숫자는 Long 또는 Double, 불리언은 Boolean에 대응합니다. boolean getter는 is가 아니라 get을 사용합니다.
null 값은 Object, null로만 된 배열은 List<?> 타입이 됩니다. 실제 데이터를 알게 되면 구체적인 타입으로 바꾸세요.
FAQ
루트가 배열인 JSON도 변환할 수 있나요?
네. 루트는 List<Root2> 필드를 가진 래퍼 클래스 Root가 되고, 배열 요소는 클래스 Root2가 됩니다.
optional 필드도 처리하나요?
일부 배열 요소에 없는 키는 감지하지만 Java 출력에서는 optional 표시가 빠지므로, 모든 필드가 null을 허용하는 일반 래퍼 타입이 됩니다.
Lombok 어노테이션이나 record를 생성하나요?
아니요. 명시적인 생성자, getter, setter가 있는 일반 클래스를 작성합니다.
null 값은 어떤 타입이 되나요?
샘플에서 null인 필드는 구체적인 타입을 추론할 수 없으므로 Object(private Object note;)가 됩니다. String, Long, 중첩 클래스를 얻으려면 실제 값이 있는 샘플을 넣으세요.