jackson出现错误Unrecognizedfield,⼏种处理⽅法
错误堆栈信息如下:
at [Source: java.io.StringReader@76c5faf5; line: 1, column: 84] (through reference chain: ity.BusBaseInfoBody["result"]-&ity.BusBase dehaus.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
dehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:246)
dehaus.jackson.map.portUnknownProperty(StdDeserializer.java:604)
dehaus.jackson.map.deser.StdDeserializer.handleUnknownProperty(StdDeserializer.java:590)
dehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:689)
dehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:514)
dehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:350)
dehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:120)
dehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:97)
dehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
dehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:252)
dehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:356)
dehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:494)
dehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:350)
dehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2395)
dehaus.jackson.adValue(ObjectMapper.java:1595)
util.JSONHelper.fromJsonToObject(JSONHelper.java:72)
affic.client.GetCarInfoUtil.main(GetCarInfoUtil.java:188)
1、请求的JSON⾥⾯字段多余映射的实体类,可以通过在类的顶部添加@JsonIgnoreProperties,2.0版本引⼊
dehaus.jackson.annotate.JsonIgnoreProperties;
2、属性⼤⼩写问题,如下 属性全部⼤写,JackSon 默认是通过驼式命名法 处理 ⽐如 nickName 这样⼉,有时⽐较特殊,⽐如映⼊其他
系统的字段,可能都是⼤写,
可以通过@JsonProperty(value = "HPHM")处理
/** 车牌号码 */
@JsonProperty(value = "HPHM")
private String HPHM;
/** 车牌颜⾊ */
@JsonProperty(value = "HPYS")
private String HPYS;
/** 车辆颜⾊ */
@JsonProperty(value = "CSYS")
private String CSYS;
/** 车辆类型 */
@JsonProperty(value = "CLLX")
private Integer CLLX;
3、重写ObjectMapper 对象的 PropertyNamingStrategy⽅法 列⼦如下,但是不太建议,会出现不统⼀的问题,如果有统⼀规则可以使
⽤。
final ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy() { private static final long serialVersionUID = 1L;
// 反序列化时调⽤
@Override
public String nameForSetterMethod(MapperConfig<?> config,
AnnotatedMethod method, String defaultName) {
Name().toUpperCase();
}
// 序列化时调⽤
@Override
public String nameForGetterMethod(MapperConfig<?> config,
AnnotatedMethod method, String defaultName) {
unknown怎么处理Name().toUpperCase();
}
});
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论