ধরা যাক আমি এমন একটি এপিআইতে কল করছি যা কোনও পণ্যের জন্য নিম্নলিখিত 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;
}
}
এবং তারপরে পণ্যটি তৈরি করতে জেএস পদ্ধতিটি ব্যবহার করুন:
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
তবে এখন আমি কীভাবে ব্র্যান্ডের নামটি দখল করব তা নেওয়ার চেষ্টা করার চেষ্টা করছি, যা নেস্টেড সম্পত্তি। আমি আশা করছিলাম যে এরকম কিছু কার্যকর হবে:
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
তবে অবশ্যই তা হয়নি। আমি টীকাগুলি ব্যবহার করে যা করতে চাই তার সাধনের কোন সহজ উপায় আছে?
প্রকৃত জেএসওএন প্রতিক্রিয়াটি আমি পার্স করার চেষ্টা করছি খুব জটিল, এবং আমার কেবল একটি একক ক্ষেত্র প্রয়োজন সত্ত্বেও, প্রতিটি উপ-নোডের জন্য একটি সম্পূর্ণ নতুন ক্লাস তৈরি করতে চাই না।