제품에 대해 다음 JSON으로 응답하는 API를 호출한다고 가정 해 보겠습니다.
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Jackson 주석을 사용하여 제품 ID와 이름을 잘 매핑 할 수 있습니다.
public class ProductTest {
private int productId;
private String productName, brandName;
@JsonProperty("id")
public int getProductId() {
return productId;
}
public void setProductId(int productId) {
this.productId = productId;
}
@JsonProperty("name")
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
}
그런 다음 fromJson 메서드를 사용하여 제품을 만듭니다.
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
하지만 이제는 중첩 된 속성 인 브랜드 이름을 파악하는 방법을 알아 내려고합니다. 나는 이와 같은 것이 효과가 있기를 바랐습니다.
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
그러나 물론 그렇지 않았습니다. 주석을 사용하여 원하는 작업을 쉽게 수행 할 수 있습니까?
구문 분석하려는 실제 JSON 응답은 매우 복잡하며 단일 필드 만 필요하더라도 모든 하위 노드에 대해 전체 새 클래스를 만들 필요가 없습니다.