在下面的代码中,结果orderObj没有合同编号,订单号详细信息。仅使用连字符对字段进行反序列化。据我所知@jsonproperty应该映射。请帮助获取我的结果orderObj中的所有字段。import com.fasterxml.jackson.annotation.JsonProperty;public class Order implements Serializable { private static final long serialVersionUID = 6791737023394030929L; @JsonProperty("id") private String id; @JsonProperty("contract-id") private String contractId; @JsonProperty("order-number") private String orderNumber;}final ObjectMapper mapper = new ObjectMapper();mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector(mapper.getTypeFactory()));mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);Response response = orderServiceTarget.queryParam("contract-id",contractId).request().accept(MediaType.APPLICATION_JSON).headers(headersMap).get();final String serverResponseStr = response.readEntity(String.class);Order orderObj = objectMapper.readValue(serverResponseStr, Order.class); 结果对象是:缺少其他字段,{ "id": "7FABA1724B8F15306447852233",}这是服务器响应:{ "id": "7FABA1724B8F15306447852233", "contract-id": "42BAD9AAA5231BD", "order-number": "ADD", "market-segment": "COM",}
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
正如评论中所讨论的,您似乎ObjectMapper
已配置为使用JaxbAnnotationIntrospector
,它将查找例如@XmlElement
而不是@JsonProperty
。该id
字段仍然有效,因为其字段名称在JSON和Java之间匹配。
您只需删除以下行就可以解决此问题:
mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector(mapper.getTypeFactory()));
添加回答
举报
0/150
提交
取消