使用地图填充Java对象

时间:2019-05-22 16:27:35

标签: java reflection bigdecimal objectmapper apache-commons-beanutils

我有一个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的事情吗?

1 个答案:

答案 0 :(得分:0)

根据您的评论,似乎在处理null或缺少BigDecimal值时遇到问题。您可以使用以下提供的默认值为BigDecical注册其他转换器:

    Object defaultValue = null;
    BigDecimalConverter converter = new BigDecimalConverter(defaultValue);
    ConvertUtils.register(converter, BigDecimal.class);

有关详细信息,请参见ConvertUtilsBigDecimalConverter的文档。 ConvertUtilsBean文档中还有更具体的信息。