如何将字段名和需要read或者write的String里的字段名进行映射(例如JavaBean里保持驼峰去接收一些API返回的非驼峰结果)
- 方法1使用@JsonProperty ,可以在Java里保留驼峰
//这样就可以让status获取到statusId的值,并且在序列话的时候也会有此影响
@JsonProperty(value = "statusId")
private Integer status;
如何实现自定义的序列化和反序列化
jackyrong的jackson中自定义处理序列化和反序列化进行了介绍
有时候想忽略某些字段,或者某些public的Get方法不希望影响序列化和反序列化
用即可@JsonIgnore,作用在字段或方法上,用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解
参考jackson annotations注解详解
ALLOW_UNQUOTED_CONTROL_CHARS
- 默认ALLOW_UNQUOTED_CONTROL_CHARS是false,一般我们的json都是代码生成不会有啥问题,但是有时候数据来源不一定是代码toJson的,这个时候解析就需要放松一些,例如
"{"a" : "b\\nc"}" 有可能拿到的就是 "{"a" : "b\nc"}",(这是在代码里面的写法,存储的时候还是会少一个斜杠的).这个时候如果ALLOW_UNQUOTED_CONTROL_CHARS为false就会报错,json不可解析
- 解决方案
mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
- 会遇到的异常
com.fasterxml.jackson.core.JsonParseException:Illegal unquoted character