博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jackson 处理is开头的字段
阅读量:6498 次
发布时间:2019-06-24

本文共 989 字,大约阅读时间需要 3 分钟。

hot3.png

一、场景

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://my.oschina.net/Cubicluo/blog/1814186

你可能感兴趣的文章
HDFS的shell和API操作
查看>>
MyEclipse教程:Web开发——创建Web片段项目
查看>>
如何编辑PDF文件,PDF编辑器如何使用
查看>>
程序员笔记|如何编写优雅的Dockerfile
查看>>
再看C
查看>>
匹配ip等的正则式
查看>>
CPU值满resmgr:cpu quantum造成的Oracle等待事件解决办法
查看>>
ORACLE RAC 更改instance name完整步骤
查看>>
【Cocos2d开发】Cocos2d下安卓环境的搭建
查看>>
vsftpd用户配置 No.2
查看>>
Ovirt 安装部署方法
查看>>
shell
查看>>
Linux时间同步
查看>>
毕业后五年之内将决定你的一生
查看>>
我的友情链接
查看>>
用python操作mysql数据库(之“更新”操作)
查看>>
快速排序(二)最后修改
查看>>
围观文件穿越操作
查看>>
41.uniq命令
查看>>
linux tune2fs简解(每日一令之五)
查看>>