도움말

JSON 자바 객체 변환: Java 클래스와 record 만들기

JSON을 붙여넣으면 바로 쓸 수 있는 Java 코드가 나와요. 객체마다 클래스가 하나씩 만들어지고, private 필드와 인자 없는 생성자, getter와 setter가 들어가요. 원하면 Java record로도 받을 수 있어요. 중첩된 객체는 부모 클래스 안에 쓰이기 때문에 결과 전체가 .java 파일 하나에 들어가요. 원래 JSON 키가 필요할 땐 Jackson이나 Gson 애너테이션을 추가하세요. 변환은 브라우저 안에서 이뤄지고 JSON은 업로드되지 않아요.


JSON to POJO online: 사용 방법

  1. JSON 입력란에 JSON을 붙여넣으세요(“여기에 JSON을 붙여넣으세요...”라고 적혀 있어요). 붙여넣은 내용은 바로 변환돼요. 직접 입력하면 멈춘 뒤 약 300밀리초 후에 코드가 갱신돼요.
  2. Java 코드 아래의 클래스를 확인하세요. 그 아래의 “클래스 2개를 만들었어요.” 같은 줄이 몇 개가 만들어졌는지 알려줘요.
  3. 코드 바로 아래의 복사를 누르세요. 버튼이 잠깐 “복사했어요”로 바뀌어요. 코드는 루트 클래스 이름과 같은 파일(예: Root.java)로 저장하세요.
  4. 결과를 바꾸려면 설정을 열어요. 루트 클래스 이름(기본값은 Root)을 입력하고, 애너테이션에서 없음, Jackson, Gson 중 하나를 고르거나 클래스 대신 레코드 사용에 체크하세요. 설정을 바꾸면 코드가 바로 갱신돼요.
  5. 지우기를 누르면 입력란이 비워져서 처음부터 다시 시작할 수 있어요.

자바 객체 JSON 변환 예시: JSON을 넣으면 클래스가 나와요

붙여넣는 JSON은 이래요: { "user_id": 7, "name": "Ana", "price": 4.5, "tags": ["a", "b"], "address": { "city": "Kyoto" } }

애너테이션을 “없음”으로 하면 결과는 import java.util.List;와 public class Root로 시작해요. 필드는 Integer userId, String name, Double price, List<String> tags, Address address예요. 이어서 인자 없는 생성자와 getUserId, setUserId 같은 getter와 setter가 나와요.

중첩된 address 객체는 Root 안의 public static class인 Address가 됐어요. 그래서 파일 하나면 충분해요. 키 user_id는 필드 userId가 됐고, 상태 줄이 “필드 이름 1개를 Java에 맞게 바꿨어요.”라고 알려줘요.

Java record와 Jackson 애너테이션

루트 클래스 이름을 Order로 하고, 애너테이션에서 Jackson을 고른 뒤 클래스 대신 레코드 사용에 체크하세요. 같은 JSON이 public record Order(...)가 돼요.

record의 각 구성 요소에는 원래 JSON 키가 담긴 @JsonProperty("key")가 붙기 때문에 user_id는 계속 userId에 연결돼요. Gson을 고르면 같은 구성 요소에 @SerializedName("key")가 붙고 Gson import도 추가돼요. record는 Java 16 이상이 필요해요.

JSON 타입이 Java 타입이 되는 방식

모든 타입은 박싱된 타입이라서 어떤 필드든 없거나 null이어도 괜찮아요.

숫자는 쓰인 그대로 읽기 때문에 긴 ID도 반올림되지 않아요. import는 코드에서 쓸 때만 추가돼요. 같은 객체에 같은 키가 두 번 나오면 마지막 것이 쓰여요.

클래스 이름과 필드 이름을 정하는 방법

루트 클래스 이름은 올바른 Java 이름으로 다듬어지고, 입력란이 비어 있으면 Root가 돼요. JSON 자체가 객체 배열로 시작하면 Root는 항목 하나를 나타내고, 화면에서 JSON을 List<Root> 형태로 읽으라고 안내해요.

JSON이 받아들여지지 않을 때

읽기는 JSON 규칙대로 엄격해요. 주석, 작은따옴표, 끝에 붙은 쉼표는 오류예요. “이 JSON을 읽을 수 없어요” 칸에 이유와 “3행 5열” 같은 위치가 나와요. 예를 들면 ““}”에서 파서가 멈췄어요. 바로 앞에 쉼표, 콜론, 괄호, 따옴표가 빠지지 않았는지 확인하세요.”처럼 표시돼요.

42나 숫자 배열처럼 올바른 JSON이어도 객체가 없으면 “이 JSON에는 클래스로 만들 객체가 없어요.”라고 나와요. 200만 자를 넘는 텍스트와 200단계보다 깊은 중첩은 받아들여지지 않아요.


자주 묻는 질문

Java에서 JSON을 POJO로 바꾸려면 어떻게 하나요?

JSON을 “JSON” 입력란에 붙여넣고 “Java 코드”의 코드를 복사하세요. JSON 객체마다 클래스가 하나씩 만들어지고, private 필드와 public 인자 없는 생성자, public getX와 setX 메서드가 들어가요. 코드는 루트 클래스 이름과 같은 파일(예: Root.java)로 저장한 뒤 Jackson이나 Gson으로 JSON을 읽으면 돼요.

JSON 배열을 Java 객체로 바꾸려면 어떻게 하나요?

객체 배열을 그대로 붙여넣으세요. 배열의 항목 하나가 루트 클래스로 쓰이고, JSON을 List로 읽으라고 안내해요. Jackson에서는 TypeReference>, Gson에서는 TypeToken>예요. 객체 안에 있는 배열은 키 이름을 딴 클래스의 List 필드가 돼요.

Jackson이나 Gson으로 원래 JSON 키를 유지하려면 어떻게 하나요?

“설정”을 열고 “애너테이션”에서 Jackson이나 Gson을 고르세요. Jackson은 모든 필드에 @JsonProperty("key")를, Gson은 @SerializedName("key")를 붙이고 import도 추가해요. “없음”이면 user_id 같은 키는 필드 userId가 되고, 애너테이션이나 이름 규칙으로 원래 키를 유지하지 않으면 JSON과 다시 연결되지 않아요.

JSON에서 Java record를 만들 수 있나요?

네. “설정”에서 “클래스 대신 레코드 사용”에 체크하세요. JSON 객체마다 public record Name(Type a, Type b) {}가 만들어지고, 중첩된 객체는 부모 record 안의 record가 돼요. record는 Java 16 이상이 필요해요. 애너테이션도 그대로 동작하고 각 구성 요소에 붙어요.

JSON 숫자가 어떤 곳에서는 Integer이고 다른 곳에서는 Double인 이유가 뭔가요?

타입은 숫자를 쓴 방식에 따라 정해져요. 정수는 Integer이고, Integer에 담기엔 크면 Long, Long에도 크면 BigInteger예요. 소수점이나 지수가 있게 쓴 숫자는 1.0이어도 Double이에요.

배열 안의 객체들이 서로 다른 키를 가지면 어떻게 되나요?

그중 어느 하나에라도 나온 모든 키를 가진 클래스 하나로 합쳐져요. 일부 객체에만 있는 키도 필드가 생겨요. 키에 여러 타입이 섞여 있거나 배열이 비어 있으면 필드 타입은 Object 또는 List가 돼요. 그런 필드는 직접 확인하세요.

Kotlin 클래스나 Lombok 애너테이션도 만들어 주나요?

아니요. 결과는 getter와 setter가 있는 클래스나 record 같은 순수 Java예요. Lombok을 쓴다면 getter와 setter 메서드를 지우고 클래스에 @Data를 붙이세요. Kotlin data class는 따로 작성해야 해요.

JSON은 얼마나 커도 되고, 업로드되나요?

최대 200만 자, 중첩은 200단계까지예요. 변환은 브라우저 안에서 이뤄지므로 JSON이 업로드되거나 저장되지 않아요.