Java 如何使用BeanIO将0转换为null
我的问题是如何将整数值0转换为null?之前我使用了Xmappr注释,它与此注释配合得很好:Java 如何使用BeanIO将0转换为null,java,xml,converter,bean-io,Java,Xml,Converter,Bean Io,我的问题是如何将整数值0转换为null?之前我使用了Xmappr注释,它与此注释配合得很好: @Text @Field(xmlType=XmlType.Text, format=....) private Integer personNumber; 现在我必须使用BeanIO,所以我尝试: @Field(xmlType=XmlType.Text) 它不起作用了 单元测试需要从XML文件中读取数字才能成功。如果XML中的personNumber等于0,则必须将其作为null写入数组中。在
@Text
@Field(xmlType=XmlType.Text, format=....)
private Integer personNumber;
现在我必须使用BeanIO,所以我尝试:
@Field(xmlType=XmlType.Text)
它不起作用了
单元测试需要从XML文件中读取数字才能成功。如果XML中的personNumber等于0,则必须将其作为null写入数组中。在这种情况下,数组应该如下所示:[1,2,null]
XML文件:
Java now中的注释:
是否我必须在字段注释中指定格式:
@Text
@Field(xmlType=XmlType.Text, format=....)
private Integer personNumber;
如果是,应该指定什么格式?当数字为“0”时,可以尝试使用自定义org.beanio.types.IntegerTypeHandler返回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的字段更改为:
我还没有测试过这个,但它应该可以工作。您是否尝试过将nillable设置为true?0真的等于null吗?如果您的XML不应包含人名,那么为什么标记的正文不是空的?@OHGODSPIDERS我尝试过,但出现了一个错误:xmLType“text”不是空的nillable@ThomasXML必须与以前有xmappr注释时的XML相同,不能真正使用它。这一部分只是其中的一小部分:/我不熟悉BeanIO,但我认为它可以调用setter,如果它们存在的话。在这种情况下,您可以在那里处理0。或者,如果您想使用一种格式,尽管我不确定违反规则时会发生什么,您可能需要一个正则表达式,它类似于^[1-9][0-9]*$,即一个以大于0的数字开头的数字,后面跟着包括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);
}
}
@Field(xmlType=XmlType.Text, handlerClass=IntegerToNullTypeHandler.class)
private Integer personNumber;