如何使用Jackson注释将嵌套值映射到属性?
发布于 2021-01-31 16:06:32
假设我正在调用一个API,该API用产品的以下JSON响应:
{
"id": 123,
"name": "The Best Product",
"brand": {
"id": 234,
"name": "ACME Products"
}
}
我可以使用Jackson标注来映射产品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响应非常复杂,即使我只需要一个字段,我也不必为每个子节点都创建一个全新的类。
关注者
0
被浏览
123
1 个回答
-
您可以这样实现:
String brandName; @JsonProperty("brand") private void unpackNameFromNestedObject(Map<String, String> brand) { brandName = brand.get("name"); }
推荐阅读
-
如何使用Jackson批注将嵌套值映射到属性?
2021-01-30 关注 0 浏览124 1答案
-
使用Jersey / JAXB / Jackson将Java.util.Map映射到JSON对象
2021-01-31 关注 0 浏览74 1答案
-
如何使用JPA和Hibernate将MySQL JSON列映射到Java实体属性
2021-01-30 关注 0 浏览110 1答案
-
将枚举映射到带有休眠注释的表
2021-02-01 关注 0 浏览86 1答案
-
如何使用NHibernate将XML类型列映射到强类型对象属性?
2021-04-20 关注 0 浏览98 1答案
-
如何使用JPA将映射JSON列映射到Java对象
2021-02-02 关注 0 浏览99 1答案
-
如何将JSON字段映射到自定义对象属性?
2021-02-02 关注 0 浏览117 1答案
-
日期格式映射到JSON Jackson
2021-01-31 关注 0 浏览122 1答案
-
将字典值映射到列表
2021-01-29 关注 0 浏览86 1答案
-
如何将属性值注入使用注释配置的 Spring Bean?
2022-05-26 关注 0 浏览14 1答案