Katakanlah saya melakukan panggilan ke API yang merespons dengan JSON berikut untuk sebuah produk:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Saya dapat memetakan id dan nama produk dengan baik menggunakan anotasi Jackson:
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;
}
}
Dan kemudian menggunakan metode fromJson untuk membuat produk:
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
Tapi sekarang saya mencoba mencari cara untuk mendapatkan nama merek, yang merupakan properti bertingkat. Saya berharap sesuatu seperti ini akan berhasil:
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
Tapi tentu saja tidak. Adakah cara mudah untuk mencapai apa yang saya inginkan dengan menggunakan anotasi?
Respons JSON sebenarnya yang saya coba parse sangat kompleks, dan saya tidak ingin membuat seluruh kelas baru untuk setiap sub-node, meskipun saya hanya memerlukan satu bidang.