概述
2019独角兽企业重金招聘Python工程师标准>>>
一、场景
public class Result {
private boolean isSuccess;
public boolean isSuccess() {
return isSuccess;
}
public void setSuccess(boolean success) {
isSuccess = success;
}
模型中有形如以上以is开头的字段,使用idea自动生成的get、set方法如上。此时,如果用Jackson序列化或者反序列化这个类时会出现以下问题
序列化:
String input = "{"isSuccess":true}n";
Result b = mapper.readValue(input, Result.class);
System.out.println(b.toString());
问题1:测试结果:Jackson报错,因为无法识别isSuccess这个字段,Jackson按照get、set方法识别的是success字段;
问题2:在问题1的基础上,有时候我们会使用这个注解来忽略无法识别的字段@JsonIgnoreProperties(ignoreUnknown = true),这时候就会出现,无论你传进来的isSuccess是true还是false,反序列化后,你得到的Result里的isSuccess始终都是false,这是因为这个false实际上是类的初始化值,实际上这个isSuccess被忽略了,所以是赋值的默认值false
@JsonIgnoreProperties(ignoreUnknown = true)
public class Result {
二、解决方案
2.1 尽量避免使用is开头的字段
2.2 修改get、set方法(不用idea自动生成的)
public boolean getIsSuccess() {
return isSuccess;
}
public void setIsSuccess(boolean success) {
isSuccess = success;
}
三、参考文献
https://stackoverflow.com/questions/32270422/jackson-renames-primitive-boolean-field-by-removing-is
转载于:https://my.oschina.net/Cubicluo/blog/1814186
最后
以上就是激情路人为你收集整理的Jackson 处理is开头的字段的全部内容,希望文章能够帮你解决Jackson 处理is开头的字段所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复