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) {}