前言:
Hutool是一款开箱即用的包,可以理解为将常用的一些代码封装好,只需要调用就行的,文档齐全,且注释中文,作为源码学习也是不错的选择。
需求:
将JSON数据转成对应的Bean并根据产品文档将指定值赋值为空后返回。
问题:
使用Hutool的BeanUtil.copyProperties 报错 “未知”。
解决:
直接报错未知很苦恼,因为有好几十个字段,并不好判断到底什么出错,字段类型看了是没问题的,要是能先跳过就好了,Hutool肯定有考虑到这个情景。
于是开始查看代码,首选进入copyProperties,看到实际调用的代码copyProperties(source, target, CopyOptions.create().setIgnoreProperties(ignoreProperties));
看到这里我们看一下第三个参数 CopyOptions.create().setIgnoreProperties(ignoreProperties)
我们点进来看看create都能设置什么,发现果然可以忽略注入错误,应该可以避免我们的错误。
怎么调用这个方法呢,我们看到当前我们在CopyOptions中,那我们先找到了其初始化
也就是说在create之后就可以调用了,为什么可以.set多个呢?这里用到了链式对象编程,后面会写一篇专门介绍。
所以现在我们只需要第三个参数传入的CopyOptions多设置一个忽略即可。
最终调用如下,因为最终toBean更符合自己的需求,大家可以按照实际情况选择toBean或者copyProperties。
for (Object rows : dataObject.getJSONArray("rows")) {
AnalysisRows analysisRows = BeanUtil.toBean(rows, AnalysisRows.class, CopyOptions.create().setIgnoreError(true).setIgnoreNullValue(false));
//返回的部分字段置空
convertBlankField(analysisRows);
analysisRowsList.add(analysisRows);
}