मान लें कि मैं किसी API के लिए एक कॉल कर रहा हूं जो एक उत्पाद के लिए निम्नलिखित JSON के साथ प्रतिक्रिया करता है:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
मैं जैक्सन एनोटेशन का उपयोग करके उत्पाद आईडी और नाम को ठीक करने में सक्षम हूं:
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 प्रतिक्रिया जो मैं पार्स करने की कोशिश कर रहा हूं, वह बहुत जटिल है, और मैं हर उप-नोड के लिए एक नया वर्ग बनाना नहीं चाहता, भले ही मुझे केवल एक ही फ़ील्ड की आवश्यकता हो।