将行式 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 脚本

来源https://stackoverflow.com/questions/76754157/how-to-change-an-unnormalized-csv-file-to-a-complex-json-or-java-object