Bir ürün için aşağıdaki JSON ile yanıt veren bir API'ye çağrı yaptığımı varsayalım:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Ürün kimliğini ve adını Jackson ek açıklamalarını kullanarak iyi bir şekilde eşleyebiliyorum:
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;
}
}
Ve sonra ürünü oluşturmak için fromJson yöntemini kullanarak:
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
Ama şimdi iç içe geçmiş bir mülk olan marka adını nasıl alacağımı bulmaya çalışıyorum. Bunun gibi bir şeyin işe yarayacağını umuyordum:
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
Ama tabii ki olmadı. Ek açıklamaları kullanarak istediğimi başarmanın kolay bir yolu var mı?
Ayrıştırmaya çalıştığım gerçek JSON yanıtı çok karmaşık ve sadece tek bir alana ihtiyacım olmasına rağmen her alt düğüm için tamamen yeni bir sınıf oluşturmak zorunda kalmak istemiyorum.