最近在项目中调用.NET的服务时,Jackson在解析返回的json字符串时始终报错,纠结很久之后才找到原因,原来是由于json字符串中的Key都是首字母大写,导致jackson找不到相应的Key。
可以使用PropertyNamingStrategy统一处理:
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy() {
private static final long serialVersionUID = 1L;
// 反序列化时调用
@Override
public String nameForSetterMethod(MapperConfig<?> config,
AnnotatedMethod method, String defaultName) {
return method.getName().substring(3);
}
// 序列化时调用
@Override
public String nameForGetterMethod(MapperConfig<?> config,
AnnotatedMethod method, String defaultName) {
return method.getName().substring(3);
}
});
另外也可以在属性上添加注解:
@JsonProperty(value = "Name")
private String name;
但是这种方案需要在每个属性上添加注解,稍显麻烦。