比方說,我正在向具有以下JSON的產品響應的API調用:如何使用Jackson註釋將嵌套值映射到屬性?
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
我能夠映射的產品ID和名稱就好用傑克遜註釋:
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響應非常複雜,我不想爲每個子節點創建一個全新的類,即使我只需要一個字段。
我結束了使用https://github.com/json-path/JsonPath - Spring也在底層使用它。例如,在他們的org.springframework.data.web中。 – dehumanizer