JSON to Java 클래스 변환기: JSON 데이터에서 POJO 생성

발행: (2026년 2월 23일 오전 02:38 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

소개

JSON 응답을 Java 클래스에 매핑하는 것은 Java 백엔드 개발에서 가장 흔한 작업 중 하나입니다. REST API를 사용할 때는 JSON 응답 구조와 일치하는 Java 클래스가 필요합니다. 중첩된 JSON 객체에 대해 POJO를 직접 작성하면 시간이 많이 걸리고 실수가 발생하기 쉽습니다.

샘플 JSON

{
  "id": 1,
  "name": "John Doe",
  "email": "john@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Springfield",
    "zipCode": "62701"
  },
  "orders": [
    { "orderId": "A001", "total": 29.99 }
  ]
}

생성된 POJO

클래스를 직접 작성하는 대신 JSON‑to‑Java 변환기를 사용하면 즉시 다음을 생성할 수 있습니다:

  • private 필드가 포함된 POJO 클래스
  • 각 필드에 대한 getter와 setter
  • 기본 생성자와 매개변수 생성자
  • 중첩 객체를 위한 중첩 클래스
  • 배열을 위한 List 타입
  • 적절한 Java 타입(String, int, double, boolean)
public class User {
    private int id;
    private String name;
    private String email;
    private Address address;
    private List orders;

    // Getters and setters
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }

    public Address getAddress() { return address; }
    public void setAddress(Address address) { this.address = address; }

    public List getOrders() { return orders; }
    public void setOrders(List orders) { this.orders = orders; }
}

Jackson을 사용한 직렬화

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;

// Example POJO with Jackson annotations
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
    @JsonProperty("id")
    private int id;

    @JsonProperty("name")
    private String name;

    // other fields, getters, setters...
}

// Serialization / deserialization
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonString, User.class);
String json = mapper.writeValueAsString(user);

  • JSON 이름이 Java 필드 이름과 다를 경우 @JsonProperty를 추가합니다.
  • 예상치 못한 JSON 속성을 무시하고 향후 호환성을 유지하려면 @JsonIgnoreProperties(ignoreUnknown = true)를 사용합니다.
  • Java 16 이상에서는 불변 데이터 전달 객체로 레코드를 고려할 수 있습니다:
public record User(int id, String name, String email, Address address, List orders) {}
0 조회
Back to Blog

관련 글

더 보기 »

Java의 인터페이스

소개 Java에서 인터페이스는 추상화와 다중 상속을 구현하기 위해 사용됩니다. 인터페이스는 클래스가 무엇을 해야 하는지를 정의하지만, 어떻게 해야 하는지는 정의하지 않습니다. 무엇…