将行式 csv 转换成层次的 json
csv 文件的前 3 列是分类,后 2 列是明细。
user_id,nickname,joinDate,product_id,price
1,kmh,2023-07-24,P131,3000
1,kmh,2023-07-24,P132,4000
1,kmh,2023-07-24,P133,7000
1,kmh,2023-07-24,P134,9000
2,john,2023-07-24,P135,2500
2,john,2023-07-24,P136,6000
3,alice,2023-07-25,P137,4500
3,alice,2023-07-25,P138,8000
用 Java 实现:将 csv 文件转为带层次的 json 串,部分结果如下。
[{
"user_id": 1,
"nickname": "kmh",
"joinDate": "2023-07-24",
"orders": [{
"product_id": "P131",
"price": 3000
}, {
"product_id": "P132",
"price": 4000
}, {
"product_id": "P133",
"price": 7000
}, {
"product_id": "P134",
"price": 9000
}]
},
…]
SPL 代码:
=json(T($[d:/data.csv]).group(user_id,nickname,joinDate;~.new(product_id,price):orders))
函数 T 将 csv 读为结构化数据对象,$[] 是字符串标志。 json 将多层的结构化数据对象转为多层 json 串。group 分组并计算分组后的数据,符号 ~ 表示当前组,new 新建结构化数据对象。
Java 集成 SPL 可参 Java 如何调用 SPL 脚本
英文版