gpt4 book ai didi

java - 如何使用 Jackson 注释将嵌套值映射到属性?

转载 作者:IT老高 更新时间:2023-10-28 11:53:59 25 4
gpt4 key购买 nike

假设我正在调用一个 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;
}

但当然没有。有没有一种简单的方法可以使用注释来完成我想要的事情?

The actual JSON response I'm trying to parse is very complex, and I don't want to have to create an entire new class for every sub-node, even though I only need a single field.

最佳答案

你可以这样实现:

String brandName;

@JsonProperty("brand")
private void unpackNameFromNestedObject(Map<String, String> brand) {
brandName = brand.get("name");
}

关于java - 如何使用 Jackson 注释将嵌套值映射到属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com