问题出现
在最近写的一个项目中,需要把一个实体对象以json文档的形式储存。
其中包含这样的一个类:

一开始使用**ObjectMapper().writeValueAsString(data)**时可以非常正常地生成以下json:

后面一直在正常进行开发,直到有一天打开了一下生成的json文档,发现里面出现了奇怪的东西:

是的就是放在第一个的notNull!
问题定位
其实整个生成json文档的逻辑非常简单,就是读数据,生成相应的json格式字符串,最后写入文档。
问题只可能出现在生成json格式的位置!通过debug也可以很容易的验证这个结论。
全局搜索notnull发现只有一个函数包括了这两个单词:

问题解决
当时第一反应是getNotNull这个函数名是不是和其他函数名冲突了,于是我把函数名改为了getOneList,结果输出的json文档变成了这样:

这样的话问题就很显然了,应该是**ObjectMapper().writeValueAsString(data)**在生成json格式的字符时会调用data类中全部的getter方法。
所以解决方法就是把函数名改掉,不使用get开头!
在项目开发中,遇到JSON文档生成包含notNull的问题,经排查发现是由于`getNotNull`函数名与Java默认getter方法冲突。解决办法是修改函数名,避免使用以`get`开头,确保`ObjectMapper.writeValueAsString`正确调用。
1174

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



