bean-io - 使用 beanio (beanio.org) 编写平面文件。pojo 有父类
问题描述
我需要使用年龄对不同数据类型的 pojo 进行排序,例如学生、员工、患者,并将其存储到数组中。然后使用 beanio 将其写入平面文件。
通过json,我发送的请求可以包含学生、员工和患者的数组。我在java端有3个pojo,比如学生、员工、患者来存储来自json请求的数据。
我能够合并然后将所有对象数组(如学生、员工、患者)分类为单个类数组,该类是学生、员工、患者等人类的基类。我必须制作人类类,这样我就可以使用 Comparator 按属性年龄对所有 3 个子类进行排序。
class SortbyAge implements Comparator<Human>
{
// Used for sorting in ascending order of
// age
public int compare(Human a, Human b)
{
return a.getAge() - b.getAge();
}
}
到这里一切都很好。我能够根据年龄对数据进行排序并将其存储到 Human Array 中。
问题是当我使用 beanio 将排序数据写入平面文件时。
**当我将数据写入平面文件时,我收到异常以下的异常
org.beanio.BeanWriterException:Bean 识别失败:没有记录或组映射 bean 类 'class [Lcom.amex.ibm.model.Human;' 在当前位置**
我已将所有 4 个标签写入 xml 文件,如下所示。
<record name="student" class="com.amex.ibm.model.Student" occurs="0+" maxLength="unbounded">
<field name="name" length="3"/>
<field name="age" length="8"/>
<field name="address" length="15"/>
</record>
<record name="employee" class="com.amex.ibm.model.Employee" occurs="0+" maxLength="unbounded">
<field name="name" length="3"/>
<field name="age" length="8"/>
<field name="address" length="15"/>
</record>
<record name="patient" class="com.amex.ibm.model.Patient" occurs="0+" maxLength="unbounded">
<field name="name" length="3"/>
<field name="age" length="8"/>
<field name="address" length="15"/>
</record>
<record name="human" class="com.amex.ibm.model.Human" occurs="0+" maxLength="unbounded">
<field name="age" length="3"/>
</record>
如何在 bean IO 中定义父类映射?
解决方案
您看到的问题是 BeanIO 不知道如何映射类型数组Human
您需要将每个单独的对象传递给 BeanIO 以将其写出到您的文件中。试试这个,循环遍历你的数组,然后将每个对象传递给 BeanIO。
改变
b.write(listFinalArray);
至
for (int i = 0; i < listFinalArray.length; i++) {
b.write(listFinalArray[i]);
}
或更少的打字:
for (final Human human : listFinalArray) {
b.write(human);
}
推荐阅读
- android - 更新gms库的android x迁移问题
- python - 使用 xlwings 打开 excel 工作表。需要搜索字符串并打印整行
- typescript - 打字稿,将一个对象映射到另一个对象?
- visual-studio-code - VS Code 是否有扩展来替换标题栏?
- python - 请求错误:未找到连接适配器
- python - 如何使用与功能相关的颜色图绘制立方体或平行六面体
- python - 如何使用 django_oauth_toolkit 从 refresh_token 获取新的 access_token?
- filter - 标准外设库中的 STM8A CAN 过滤
- javascript - 点击html标签后Javascript不起作用?
- php - 刷新页面时如何自动清除缓存?