如何解决来自 CSV 的 BeanIO 读取字段,表示集合
我有一个带有 ;
分隔符的 CSV 文件,但在其中一个字段中它表示带有 |
分隔符的对象:
field1;field2;field3;"field-4.1;field-4.2|field-4.1;field-4.2";field5;field6;
所以问题在于 field4
表示由管道分隔的多个对象。
其实我的模板是这样的:
<record name="fields" class="br.com.beanio.MyPojo">
<field name="field1"/>
<field name="field2"/>
<field name="field3"/>
<segment name="fields4" minOccurs="0" collection="list" class="br.com.beanio.MySubPojo">
<field name="field4-1" />
<field name="field4-2" />
</segment>
<field name="field5"/>
<field name="field6"/>
</record>
我尝试使用不同的属性来识别 field4 何时代表一个新对象,但没有奏效。
如何使用 beanIO 模板读取字段 4?
提前致谢
解决方法
我的解决方案是为该字段创建一个 typeHandler:
public class MyCustomTypeHandler implements TypeHandler {
在我的模板中,我使用了 typeHandler:
<field name="fieldWithList" typeHandler="MyCustomTypeHandler"/>
因此在 typeHandler 中的 parse 方法中,我可以处理该字段:
if (nonNull(text)) {
asList(text.split("\\|")).forEach(str -> {
String[] fields = str.split(";",-1);
// process and add items to the list
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。