如何使用Jolt将JSON嵌套对象的指定键复制或移动到顶层
问题原因
你现有规则的错误点在于details层级下的通配符*匹配到子字段后,直接赋值给了根级的details字段,会把所有匹配到的子字段值直接拼成数组塞到details下,没有保留details内部的键结构。
1. 复制模式规则
复制模式需要同时把orderNumber既放到顶层,又保留在details内部,所以需要给orderNumber配两个输出路径:
[ { "operation": "shift", "spec": { "id": "id", "name": "name", "details": { "orderNumber": ["orderNumber", "details.orderNumber"], "*": "details.&" } } } ]
规则中的&代表当前层级匹配到的键名,details.&就会把details下除了单独配置的orderNumber之外的其他字段,原样保留在details对象内部。
2. 移动模式规则
移动模式不需要保留details内部的orderNumber,直接把orderNumber写到顶层,其他字段原样保留在details下即可:
[ { "operation": "shift", "spec": { "id": "id", "name": "name", "details": { "orderNumber": "orderNumber", "*": "details.&" } } } ]
内容的提问来源于stack exchange,提问作者Mike Twc
相关产品推荐
相关产品推荐

