微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自 CSV 的 BeanIO 读取字段,表示集合

如何解决来自 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 举报,一经查实,本站将立刻删除。