如何使用BeanIO将0转换为null

时间:2017-10-17 08:31:48

标签: java xml converter bean-io

我的问题是如何将整数值 0 转换为 null ?以前我使用过Xmappr注释,它对这个注释很有用:

@Field(xmlType=XmlType.Text) 

现在我必须使用BeanIO,所以我尝试了:

<Person ...> 1 </Person>
.
.
<Person ...> 2 </Person>
.
.
<Person ...> 0 </Person>

它不起作用。

单元测试需要从XML文件读取数字才能成功。如果XML中的personNumber等于0,则必须将其作为null写入数组。在这种情况下,数组应如下所示: [1,2,null]

XML文件:

@Text
private Integer personNumber;

之前的Java中的注释:

@Field(xmlType=XmlType.Text)
private Integer personNumber;

Java中的注释:

@Field(xmlType=XmlType.Text, format=....)
private Integer personNumber;

我是否必须在字段注释中指定格式:

{{1}}

如果是,应指定哪种格式?

1 个答案:

答案 0 :(得分:1)

当号码为org.beanio.types.IntegerTypeHandler时,您可以尝试使用自定义return null'0'。像这样:

import org.beanio.types.IntegerTypeHandler;

public class IntegerToNullTypeHandler extends IntegerTypeHandler {

  /**
   * {@inheritDoc}
   * @see org.beanio.types.IntegerTypeHandler#createNumber(java.lang.String)
   */
  @Override
  protected Integer createNumber(String text) throws NumberFormatException {
    if (text != null && "0".equals(text)) {
      return null;
    }
    return super.createNumber(text);
  }
}

要使用此TypeHandler,请将要使用TypeHandler的字段更改为:

@Field(xmlType=XmlType.Text, handlerClass=IntegerToNullTypeHandler.class)
private Integer personNumber;

我没有对此进行过测试,但它应该有效。