栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

查找CSV与JSON的不同

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查找CSV与JSON的不同

【问题】

let’s say i have two CSV file. file 1 defines standard csv data file & File 2 is the mapping file of file 1 & Json now what i want is i want to map those two files and compare the data of File 1 with the Json. & output the mismatch as a csv.

how do i achieve that?

File 1:

key,id,value,name,number
1,322,re43,dasu,555-456

File 2:

Rsat_key,key
Retina_id,id
reason_value,value
real_name,name
work_ph,phone

Json

{
 "Rsat_key":1,
 "Retina_id":322,
 "reason_value":,
 "real_name":dasu,
 "work_ph":,555-456,
}

【回答】

File1 和 Json 都是多行结构化数据,要比较它们的差异,只需按关键字进行 join 运算再条件查询就可以。但 JAVA 缺乏结构化计算类库,实现过程复杂,代码可读性差。这种情况下可以用集算器辅助实现,SPL 代码更直观易懂:

A
1=file("f1.csv").import@ct()
2=file("f2.csv").import@ct()
3=json(file("3.json").read())
4=condition=A2.("_1."+_2+"!=_2."+_1).concat("||")
5=join@1(A1,${csvKey};A3,${A2.select(_2==csvKey)._1})
6=A5.select(${condition})

A1:读取 f1.csv 文件的记录及列名

A2:读取 f2.csv 文件,没有列名,默认为 _1、_2

A3:读取 json 内容,并解析为结构化数据

A4:拼凑查询条件字符串

A5:join 运算。csvKey 是参数,代表 File1 的主键。函数 join 默认是内连接,@1 表示左连接。${} 表示将字符串动态解析为表达式。

A6:对 A5 做条件查询,返回满足条件的记录

JAVA 可通过 JDBC 接口调用集算器,参考【Java 如何调用 SPL 脚本】。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号