Java에서 JSON 변환기
Java POJO, record, 클래스를 붙여넣으세요. 깔끔한 JSON이 돌아옵니다.
이 도구가 하는 일
Java record나 전통적인 POJO가 있는데 그에 맞는 JSON 페이로드가 필요한 상황이 있습니다 — 요청 바디, OpenAPI 예제, 테스트 픽스처 같은 경우죠. 클래스와 생성자 호출을 함께 붙여넣거나(Java 10+라면 var order = new Order(...)도 가능) 하면, Jackson이나 Gson이 직렬화한 것과 똑같은 형태의 JSON을 돌려받습니다. 직접 인스턴스화할 필요가 없습니다.
이 도구는 단순 문자열 치환이 아니라 실제 직렬화기의 동작을 따라갑니다. BigDecimal은 BigDecimal(...) 래퍼 없이 JSON 숫자가 되고, OffsetDateTime · LocalDateTime · Instant는 RFC 8259에 따라 ISO-8601 문자열로 나옵니다. UUID는 표준 8-4-4-4-12 16진 문자열, boolean은 그대로 boolean, 컬렉션(List, Set, 배열)은 JSON 배열로 평탄화됩니다. Map<String, V>는 map 엔트리를 키로 갖는 JSON 객체가 됩니다.
Jackson 어노테이션도 그대로 반영됩니다. @JsonProperty("x")는 키 이름을 바꾸고, @JsonIgnore는 필드를 제거하며, @JsonInclude(Include.NON_NULL)은 null을 억제합니다. 중첩 클래스 — Order 안의 전형적인 Address 같은 — 는 그 자리에 펼쳐집니다. 여러 클래스가 담긴 파일을 통째로 붙여넣으면 최상위 인스턴스마다 각자 하나의 엔트리로 나옵니다. 전체 어노테이션 레퍼런스는 jackson-annotations 문서를 참고하세요.
사용 방법
세 단계면 됩니다. 한 줄짜리 record든 모델 파일 전체든 상관없습니다.
Java를 붙여넣기 (또는 샘플 사용)
클래스와 생성자 호출을 왼쪽 에디터에 떨궈주세요. getter/setter가 있는 POJO, record, Lombok @Data 클래스, 여러 클래스 전부 가능합니다. 현실적인 출발점이 필요하면 Load Sample을 눌러보세요.
package 선언, import, public/private 같은 수정자를 지울 필요는 없습니다. 표준 Java 문법 그대로 두세요. Jackson 어노테이션, validation 어노테이션, Lombok 어노테이션 모두 받아들입니다.
Convert 누르기
초록색 Convert 버튼을 누르세요. 도구가 클래스를 읽고, 생성자 인자를 해석하고, Jackson의 이름 변경/무시 어노테이션을 적용해서 들여쓰기된 JSON을 생성합니다.
JSON 복사하기
오른쪽 패널에 Spring Boot 요청, JUnit 픽스처, Swagger 예제에 바로 쓸 수 있는 JSON이 표시됩니다. 필요한 곳에 복사하세요.
이럴 때 유용합니다
Spring Boot 요청 샘플
<code>@RequestBody</code> DTO와 생성자 호출을 붙여넣으면 앱을 띄우지 않고도 Postman, curl, HTTPie에 던질 수 있는 JSON 바디를 얻을 수 있습니다.
JUnit 테스트 픽스처
단위 테스트에서 조립한 객체를 통합 테스트, WireMock 스텁, Testcontainers 시드 데이터용 독립 JSON 파일로 바꿀 수 있습니다.
OpenAPI / Swagger 예제
실제 모델 클래스로 OpenAPI 스펙의 <code>example</code> 블록을 만들어두면 예제가 실제 POJO와 어긋나지 않습니다.
Kafka와 메시징 페이로드
Kafka 메시지를 표현하는 record를 JSON으로 바꿔서 producer 테스트, 샘플 데이터, 문서에 활용할 수 있습니다.
자주 묻는 질문
Jackson 어노테이션이 적용되나요?
네. @JsonProperty는 필드 이름을 바꾸고, @JsonIgnore는 필드를 제거하며, @JsonInclude(Include.NON_NULL)은 null을 억제하고, @JsonFormat은 날짜 포맷을 제어합니다. 전체 목록은 jackson-annotations 레퍼런스를 참고하세요.
BigDecimal, LocalDateTime, UUID는 어떻게 처리되나요?
BigDecimal은 JSON 숫자가 됩니다. LocalDateTime, OffsetDateTime, Instant는 ISO-8601 문자열이고, UUID는 표준 8-4-4-4-12 16진 문자열, LocalDate는 YYYY-MM-DD입니다. Jackson JavaTimeModule의 기본 동작과 일치합니다.
record와 sealed 타입도 지원하나요?
네. Java 14+의 record는 canonical component를 사용해 직렬화됩니다. sealed 타입과 허용된 서브타입은 내부 데이터 형태로 평탄화됩니다. 배경 설명은 OpenJDK records JEP를 참고하세요.
Lombok @Data / @Builder 클래스는요?
Lombok 어노테이션도 인식합니다 — 자동 생성된 getter, setter, builder는 일반 접근자처럼 다룹니다. 선언된 필드와 붙여넣은 생성자 호출을 기반으로 JSON을 만듭니다.
여러 클래스가 담긴 파일을 통째로 붙여넣어도 되나요?
네. 붙여넣은 코드에 인스턴스가 존재하는 최상위 클래스마다 JSON에 각자 엔트리로 나옵니다. 내부/중첩 static 클래스는 사용되는 위치에 인라인으로 펼쳐집니다.
제 코드가 저장되나요?
변환 목적으로 백엔드에 전달될 뿐 저장하거나 로그에 남기지 않습니다. 다만 다른 온라인 도구와 마찬가지로, 정말 민감한 코드라면 붙여넣기 전에 한 번 확인해보세요.
함께 쓰면 좋은 도구
Java에서 JSON은 퍼즐의 한 조각일 뿐입니다. 같이 쓰면 잘 어울리는 도구들을 모았습니다.