BeanIO 从代表集合的 CSV 中读取字段

BeanIO reading field from CSV which represents a collection

我有一个带有 ; 分隔符的 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 的解析方法内部我可以处理字段:

        if (nonNull(text)) {
            asList(text.split("\|")).forEach(str -> {
                String[] fields = str.split(";", -1);
                // process and add items to the list
            });
        }