【发布时间】:2019-10-09 04:56:32
【问题描述】:
我有一个 Map<String, Object> 。使用它,我必须填充一个 java 对象。例如,
public void setBaseAttributes(BaseObject baseObj) {
Map<String, Object> map = // some method call;
org.apache.commons.beanutils.BeanUtils.populate(baseObj, map);
}
我正在使用 BeanUtils,但由于 BeanUtils 无法处理 BigDecimal,因此卡住了。我的 baseObj 有 BigDecimal,我无法摆脱它。
向专家提出的问题是:
- 我可以在这里使用更好的替代方案吗?
- 使用 BeanUtils,我们可以做点什么来处理 BigDecimal 吗?
【问题讨论】:
-
您遇到了什么错误,您使用的是什么版本的 BeanUtils?它似乎适用于 1.9.3。
-
嗨@heisbrandon,我使用的是1.9.3,这是相关的跟踪:justpaste.it/24lva
-
好的。问题不在于 BigDecimal。我在地图中有大小数的空值,这导致 BeanUtils 失败。我一直在寻找更可靠的方法,它可以与地图中存在的任何值一起形成。如果 map 中没有对应的值,则应该在 object 中为该字段设置 null。我的对象包含枚举、BigDecimal、Double、String。
标签: java reflection bigdecimal objectmapper apache-commons-beanutils