为了账号安全,请及时绑定邮箱和手机立即绑定

在编组以固定宽度文件时禁用填充或跳过字段(如果为空)

在编组以固定宽度文件时禁用填充或跳过字段(如果为空)

PIPIONE 2023-04-19 10:17:41
我正在尝试使用 BeanIO 库编写一个固定宽度的文件。这是有问题的记录:@Recordopen class KeySegment(    @Field(at = 0, length = 1, required = true) var recordType: String = "",    @Field(at = 1, length = 6, required = true) var primaryCorpId: String = "",    @Field(at = 7, length = 16, minOccurs = 0) var creditCardAcc: String? = null,    @Field(at = 7, length = 8, minOccurs = 0) var companyId: String? = null,    @Field(at = 15, length = 8, minOccurs = 0) var sublevelId: String? = null,    @Field(at = 23, length = 8, required = true) var fileCreateDate: String = "",    @Field(at = 31, length = 8) var sourceId: String = "",    @Field(at = 39, length = 816) var filler: String = "")请注意,creditCardAcc并companyId + sublevelId在文件中保持相同的位置。根据用例,我们设置creditCardAccfield 或companyIdand sublevelId。现在对于我的用例,我想设置creditCardAcc,但问题是companyId和sublevelId被空格填充并覆盖creditCardAcc字段,即使它们被设置为null。一种解决方案是将这些字段拉入两个子类 extendingKeySegment和 marshal 子类。但是,我想知道是否有更好的本机解决方案可用于实现此目的。例如,如果字段为空,是否有办法禁用填充?谢谢。
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

当字段为 时,无法禁用填充null。该属性在padding具有以下说明

如果启用填充,则必填字段属性可以控制空值的编组和解组。

当解组由固定长度流中的所有空格组成的字段时,如果 required 为 false,则无论填充字符如何都接受该字段。如果 required 为真,则触发必填字段验证错误。当编组空字段值时,如果 required 为 false,则无论配置的填充字符如何,字段文本都将格式化为空格。

引用的最后一句话正是你要问的。


查看完整回答
反对 回复 2023-04-19
  • 1 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信