Giả sử tôi đang thực hiện cuộc gọi đến một API phản hồi bằng JSON sau cho một sản phẩm:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
Tôi có thể lập bản đồ id và tên sản phẩm bằng cách sử dụng chú thích 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;
}
}
Và sau đó sử dụng phương thức fromJson để tạo sản phẩm:
JsonNode apiResponse = api.getResponse();
Product product = Json.fromJson(apiResponse, Product.class);
Nhưng bây giờ tôi đang cố gắng tìm ra cách lấy tên thương hiệu, một tài sản lồng vào nhau. Tôi đã hy vọng rằng một cái gì đó như thế này sẽ hoạt động:
@JsonProperty("brand.name")
public String getBrandName() {
return brandName;
}
Nhưng tất nhiên là không. Có cách nào dễ dàng để đạt được những gì tôi muốn bằng cách sử dụng chú thích không?
Phản hồi JSON thực tế mà tôi đang cố gắng phân tích cú pháp rất phức tạp và tôi không muốn phải tạo toàn bộ một lớp mới cho mọi nút con, mặc dù tôi chỉ cần một trường duy nhất.