2 回答
TA贡献1784条经验 获得超7个赞
如果您的输入 JSON 有额外的字段,您可以使用以下任何一种方法来允许反序列化:
您可以将整个 ObjectMapper 配置为不会在额外字段上失败:
ObjectMapper mapper = new ObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Products products = mapper.readValue(url, Products.class);
使用 @JsonIgnoreProperties(ignoreUnknown = true) 注释您的 Product 类
TA贡献1784条经验 获得超9个赞
我想你可能明白这一点,但在基本层面上,你做错了。
类中的字段名称必须与 JSON 中的字段名称完全匹配,或者您必须使用@JsonProperty注解来识别 JSON 中的确切字段名称。下面是一个示例,展示了如何将newJSON 中的字段映射到您的对象:
public class Product
{
@JsonProperty("new")
private String _new;
}
请注意,@JsonProperty注释中的名称与 JSON 中的字段名称完全匹配。只要这成立,JAVA 字段的实际名称就无关紧要。这也适用于“新”领域:
public class Product
{
@JsonProperty("new")
private String thisFieldNameDoesNotMatter;
}
编辑:添加了其他详细信息以反映对问题的编辑。
您的问题的答案是:注意。
实际阅读杰克逊给你的错误:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:
Unrecognized field "delivery_in_stock"
... additional details included by Jackson, but deleted here.
Jackson 错误消息标识 JSON 中有一个名为“delivery_in_stock”的无法识别的字段。
添加一个字段以包含来自 JSON 的“delivery_in_stock”字段值,或者使用此注释指示 Jackson 忽略未映射的属性:
@JsonIgnoreProperties(ignoreUnknown = true)
添加回答
举报