Ruby数据处理:固定长度记录、JSON与二进制数据
1. 读写固定长度记录
在处理公司支付网关需要导入的信用卡交易文件时,我们会遇到固定长度记录(FLRs)的文件。这种文件的特点是所有数据记录的属性具有固定宽度。例如,文件中每行的前五个字符包含要从信用卡收取的金额(以美分为单位)。
Ruby没有处理FLR文件的标准库,因此我们需要自己编写一个库。
首先,我们来看文件的完整格式描述:
| 位置 | 描述 |
| ---- | ---- |
| 1 - 5 | 金额(美分) |
| 6 - 11 | 信用卡有效期至(mmyyyy) |
| 12 - 55 | 主账号(Base64,使用AES - 256 - CBC加密) |
| 56 - 95 | 持卡人姓名 |
以下是实现读取功能的代码:
class FixedLengthRecordFile
include Enumerable
def initialize(source, field_sizes)
if field_sizes.nil? or field_sizes.empty?
raise ArgumentError, 'Please, pass field sizes!'
end
@file = source
@field_pattern = get_pattern(field_sizes)
end
def each
@file.each_line do |line|
record = li
超级会员免费看
订阅专栏 解锁全文
25

被折叠的 条评论
为什么被折叠?



