JOLT转换需求:检测JSON值中的竖线特殊字符并拆分对象
JOLT转换需求:检测JSON值中的竖线特殊字符并拆分对象
嘿,我来帮你搞定这个JOLT转换的需求!你想要检测JSON里value字段中的竖线|,把包含竖线的字段拆分成多个独立对象,同时保留其他字段不变对吧?我给你整理了一套可行的JOLT转换规范,一步步帮你实现这个效果:
输入JSON
[ { "item_original_no": "item1", "attribute": "PACKAGING_MATERIAL_1", "value": "PET" }, { "item_original_no": "item2", "attribute": "colour", "value": "red|white|blue" } ]
目标输出JSON
[ { "item_original_no": "item1", "attribute": "PACKAGING_MATERIAL_1", "value": "PET" }, { "item_original_no": "item2", "attribute": "colour", "value": "red" }, { "item_original_no": "item2", "attribute": "colour", "value": "white" }, { "item_original_no": "item2", "attribute": "colour", "value": "blue" } ]
JOLT转换规范
[ { "operation": "shift", "spec": { "*": { "value": { "*|*": { "$(2,item_original_no)": "[#3].item_original_no", "$(2,attribute)": "[#3].attribute", "@(0)": "[#3].value_original" }, "*": { "$(2,item_original_no)": "[#3].item_original_no", "$(2,attribute)": "[#3].attribute", "@(0)": "[#3].value" } } } } }, { "operation": "modify-overwrite-beta", "spec": { "*": { "value_original": { "split('|')": "&1_split" } } } }, { "operation": "shift", "spec": { "*": { "value": { "@(1,item_original_no)": "[#2].item_original_no", "@(1,attribute)": "[#2].attribute", "@": "[#2].value" }, "value_split": { "*": { "@(2,item_original_no)": "[#3].item_original_no", "@(2,attribute)": "[#3].attribute", "@": "[#3].value" } } } } }, { "operation": "remove", "spec": { "*": { "value_original": "" } } } ]
转换步骤说明
- 第一步(Shift操作):先区分
value字段是否包含竖线|,对包含竖线的字段暂存原始值到value_original,不包含的直接保留原有字段结构。 - 第二步(Modify操作):利用
split('|')函数把value_original中的字符串拆分成数组,存入value_split字段。 - 第三步(Shift操作):把拆分后的数组元素逐个转换成独立的对象,同时保留未拆分的原始对象结构,确保所有数据都符合目标格式。
- 第四步(Remove操作):清理掉临时生成的
value_original字段,得到最终干净的输出结果。
备注:内容来源于stack exchange,提问作者Katja Bürger
相关产品推荐
相关产品推荐

