JOLT转换求助:嵌套字段平展与对象转字符串问题
JOLT转换修正方案
问题说明
我是JOLT转换新手,需要将指定输入JSON转换为预期输出,尝试了现有转换规范但结果不符合要求,请求协助修正。
输入JSON
[ { "product_id": 1, "product_description": "Product 1 details", "billing_details": { "product_id": 1, "billing_description": "Product 1 billing Details" }, "product_part_desc": { "id": 1, "part_description": "product 1 part description" } }, { "product_id": 2, "product_description": "Product 2 details", "billing_details": { "product_id": 1, "billing_description": "Product 2 billing Details" }, "product_part_desc": { "id": 1, "part_description": "product 2 part description" } } ]
原尝试转换规范
[ { "operation": "shift", "spec": { "*": { "product_id": "[&1].id", "product_description": "[&1].description", "billing_details": { "billing_description": "[&2].bill_desc" }, "*": "&" } } }, { "operation": "modify-overwrite-beta", "spec": { "*": { "product_part_desc": "=toString(@(1,product_part_desc))" } } } ]
预期输出
[ { "id": 1, "product_description": "Product 1 details", "billing_description": "Product 1 billing Details", "product_part_desc": "{id=1, part_description=product 1 part description}" }, { "product_id": 2, "product_description": "Product 2 details", "billing_description": "Product 2 billing Details", "product_part_desc": "{id=1, part_description=product 2 part description}" } ]
修正后的转换规范
[ { "operation": "shift", "spec": { "*": { // 根据product_id与billing_details.product_id是否匹配,动态设置字段名 "product_id": { "@(2,billing_details.product_id)": "[&3].id", "*": "[&3].product_id" }, "product_description": "[&1].product_description", "billing_details": { "billing_description": "[&2].billing_description" }, "product_part_desc": "[&1].product_part_desc" } } }, { "operation": "modify-overwrite-beta", "spec": { "*": { "product_part_desc": "=toString(@(1,product_part_desc))" } } } ]
修正说明
- 字段名映射修正:
- 原规范错误将
product_description映射为description,现在改为保留原字段名; - 原规范将
billing_description映射为bill_desc,现在改为保留原字段名;
- 原规范错误将
- 动态字段名处理:
通过JOLT条件匹配逻辑,当product_id与billing_details.product_id值相等时,将字段重命名为id,否则保留原字段名product_id,匹配预期输出的差异化字段要求; - 明确保留目标字段:
直接指定保留product_part_desc字段,避免通配符带来的不确定性; - 保留字符串转换逻辑:
保留原有的对象转字符串操作,确保product_part_desc格式符合预期。
内容的提问来源于stack exchange,提问作者pramod wadappi
相关产品推荐
相关产品推荐

