2 回答

TA貢獻1784條經(jīng)驗 獲得超7個贊
如果您的輸入 JSON 有額外的字段,您可以使用以下任何一種方法來允許反序列化:
您可以將整個 ObjectMapper 配置為不會在額外字段上失?。?/p>
ObjectMapper mapper = new ObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Products products = mapper.readValue(url, Products.class);
使用 @JsonIgnoreProperties(ignoreUnknown = true) 注釋您的 Product 類

TA貢獻1784條經(jīng)驗 獲得超9個贊
我想你可能明白這一點,但在基本層面上,你做錯了。
類中的字段名稱必須與 JSON 中的字段名稱完全匹配,或者您必須使用@JsonProperty注解來識別 JSON 中的確切字段名稱。下面是一個示例,展示了如何將newJSON 中的字段映射到您的對象:
public class Product
{
@JsonProperty("new")
private String _new;
}
請注意,@JsonProperty注釋中的名稱與 JSON 中的字段名稱完全匹配。只要這成立,JAVA 字段的實際名稱就無關(guān)緊要。這也適用于“新”領(lǐng)域:
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 錯誤消息標(biāo)識 JSON 中有一個名為“delivery_in_stock”的無法識別的字段。
添加一個字段以包含來自 JSON 的“delivery_in_stock”字段值,或者使用此注釋指示 Jackson 忽略未映射的屬性:
@JsonIgnoreProperties(ignoreUnknown = true)
添加回答
舉報