Jolt JSON转换需求:将delta字段拆分为4条独立JSON
Jolt JSON转换解决方案
初始输入示例
假设你的源JSON结构如下:
{ "product_id": "P001", "category": "electronics", "delta": { "base_price": 99.99, "base_price_with_vat": 119.99, "sale_price": 79.99, "sale_price_with_vat": 95.99 } }
目标输出
需要生成4条独立JSON记录,每条结构示例:
{ "product_id": "P001", "category": "electronics", "column_name": "base_price", "column_value": 99.99 }
Jolt Spec配置
通过shift和cardinality操作组合实现需求:
[ { "operation": "shift", "spec": { "product_id": "[&1].product_id", "category": "[&1].category", "delta": { "base_price": { "$": "[0].column_name", "@": "[0].column_value" }, "base_price_with_vat": { "$": "[1].column_name", "@": "[1].column_value" }, "sale_price": { "$": "[2].column_name", "@": "[2].column_value" }, "sale_price_with_vat": { "$": "[3].column_name", "@": "[3].column_value" } } } }, { "operation": "cardinality", "spec": { "*": { "product_id": "ONE", "category": "ONE" } } } ]
关键逻辑说明
- shift操作:
- 将
product_id、category等公共字段映射到数组的每个元素中 - 对
delta下的每个价格字段,用$提取字段名作为column_name,用@提取字段值作为column_value,分别对应数组的不同索引(0-3)
- 将
- cardinality操作:确保公共字段在每条记录中仅出现一次,避免重复映射导致的冗余
将上述配置与源JSON输入Jolt转换器,即可得到包含4条独立记录的数组结果。
内容的提问来源于stack exchange,提问作者Andrei
相关产品推荐
相关产品推荐

