如何使用 BeanIO 将 0 转换为 null
How to convert 0 to null with BeanIO
我的问题是如何将整数值0转换为null?以前我使用 Xmappr 注释并且它与这个注释一起工作得很好:
@Text
现在我必须使用 BeanIO,所以我尝试了:
@Field(xmlType=XmlType.Text)
它不起作用。
单元测试需要从 XML 文件中读取数字才能成功。如果来自 XML 的 personNumber 等于 0,则必须将其作为 null 写入数组。在这种情况下,数组应如下所示:[1,2,null].
XML 文件:
<Person ...> 1 </Person>
.
.
<Person ...> 2 </Person>
.
.
<Person ...> 0 </Person>
之前Java中的注释:
@Text
private Integer personNumber;
现在 Java 中的注释:
@Field(xmlType=XmlType.Text)
private Integer personNumber;
难道是我必须在字段注释中指定格式的事情:
@Field(xmlType=XmlType.Text, format=....)
private Integer personNumber;
如果是,应该指定什么格式?
当号码为'0'
时,您可以尝试使用自定义org.beanio.types.IntegerTypeHandler
到return null
。像这样:
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;
我还没有测试过,但应该可以。
我的问题是如何将整数值0转换为null?以前我使用 Xmappr 注释并且它与这个注释一起工作得很好:
@Text
现在我必须使用 BeanIO,所以我尝试了:
@Field(xmlType=XmlType.Text)
它不起作用。
单元测试需要从 XML 文件中读取数字才能成功。如果来自 XML 的 personNumber 等于 0,则必须将其作为 null 写入数组。在这种情况下,数组应如下所示:[1,2,null].
XML 文件:
<Person ...> 1 </Person>
.
.
<Person ...> 2 </Person>
.
.
<Person ...> 0 </Person>
之前Java中的注释:
@Text
private Integer personNumber;
现在 Java 中的注释:
@Field(xmlType=XmlType.Text)
private Integer personNumber;
难道是我必须在字段注释中指定格式的事情:
@Field(xmlType=XmlType.Text, format=....)
private Integer personNumber;
如果是,应该指定什么格式?
当号码为'0'
时,您可以尝试使用自定义org.beanio.types.IntegerTypeHandler
到return null
。像这样:
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;
我还没有测试过,但应该可以。