最近在项目中调用.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;但是这种方案需要在每个属性上添加注解,稍显麻烦。
本文详细介绍了在使用.NET服务时,Jackson在解析返回的JSON字符串时出现错误的原因及解决方案。主要原因是JSON字符串中的Key都是首字母大写,导致Jackson无法正确识别。文中提供了一个通过配置PropertyNamingStrategy来统一处理Key大小写的解决方案,以及在属性上添加@JsonProperty注解的方法。此外,还对比了两种方法的优缺点,帮助开发者根据实际情况选择合适的处理方式。

被折叠的 条评论
为什么被折叠?



