解析带有表头的数据文件

需求:从微信平台下载的账单数据文件的表头列字段顺序可能不固定,导致普通按照指定符号切割后的数据错乱。比如第一次传输的数据文件的表头为:交易时间,公众账号ID,微信订单号,商户订单号,;第二次传输的数据文件的表头为:交易时间,公众账号ID,商户订单号,微信订单号,。这样就会导致数据解析错乱。

解决方案:现将第一行的表头字段存储到map中,表头字段的位置和数据列是一致的,因此可以通过map中的位置,去数据行获取到对应的值。

伪代码:

while((readLine = br.readLine())!= null){
    fileLine ++;
    if(fileLine == 1){
        String[] columns = readLine.split(",");
        for(int i=0;i<columns.length;i++){
            map.put(columns[i],i)
        }
    }
    String txnDateTime = split[map.get("交易时间")];
    ......

}

这样即可解决数据文件提供方不能保证数据列数据的问题。

另外,在用字符串split方法截取数据行时,最后看下数据最后几列时候可能出现空字符串的值。如果有,并且判断截取后的数组长度和map的keySet长度一样的话,则使用string.split("符号",-1)方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值