【发布时间】:2018-07-24 11:51:51
【问题描述】:
我的 json 响应如下:
{"IsValid":false,"ModelErrors":null,"ValidationErrors":[10000]}
模型类:
public class ShipmentResponse {
private boolean isValid;
private ModelErrors modelErrors;
private List<Integer> validationErrors = null;
对象映射器代码:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ShipmentResponse shipmentResponse = mapper.readValue((BufferedInputStream)response.getEntity(), ShipmentResponse.class);
我无法将 validationErrors 从 json 映射到 java,即解析后validationErrors = null。我期待validationErrors = {1000} 但不知道为什么?我知道我们可以使用 TypeReference 来返回数组或列表,但不能嵌套在数据对象中。
【问题讨论】:
-
你是什么意思不能?发生了什么?
-
你的 setter 和 getter 叫什么名字?您是否使用
@JsonProperty注释它们以匹配 JSON 中字段的大写名称? -
你为什么禁用
FAIL_ON_UNKNOWN_PROPERTIES? -
@SotiriosDelimanolis :我尝试了 JsonProperty 注释,仍然没有运气。我没有 setter,但很快会更新问题中的 getter。
-
@shmosel 只要它有一个属性描述符(get 或 set),它就会注册一个属性。该属性可以通过可用的设置器或适当命名的字段进行设置。
标签: java rest jackson jackson-databind