使用Jolt实现含数组对象的嵌套JSON字段重排
Fixing Jolt Shift Operation to Preserve Nested Array and Additional Fields
嘿,我看到你的Jolt转换遇到了字段丢失的问题——具体是Order数组和Paymenttype字段没出现在输出里对吧?这是因为Jolt的shift操作默认只会保留你显式指定映射的字段,你的当前spec里没包含这两个字段,所以它们被过滤掉了。这里有两种简单的修复方式,都能得到你想要的输出:
方法1:显式映射所有需要保留的字段
直接在shift规则里添加Order和Paymenttype的映射即可,Jolt会自动保留数组的结构,不需要额外处理:
[ { "operation": "shift", "spec": { "_id": "_id", "Name": "Name", "State": "State", "Phone": "Phone", "Order": "Order", "Paymenttype": "Paymenttype" } } ]
这种方式适合你明确知道需要保留哪些字段的场景,能精准控制输出内容。
方法2:用通配符批量保留未指定字段
如果你需要保留大部分字段,或者不想每次新增字段都手动修改规则,可以用*通配符匹配所有未被显式映射的字段,按原字段名保留:
[ { "operation": "shift", "spec": { "_id": "_id", "Name": "Name", "State": "State", "Phone": "Phone", "*": "&" } } ]
"*": "&"的意思是:匹配所有没被上面规则覆盖的字段,&表示将字段值映射到和原字段名相同的输出字段中,这样不管是数组还是普通字段都会被保留。
验证结果
两种方法转换后都会得到你期望的输出:
{ "_id" : "1234", "Name" : "John", "State" : "NJ", "Phone" : "67755321", "Order": [ { "item": "pizza", "qty": 2 }, { "item": "coke", "qty": 2 } ], "Paymenttype": "Card" }
内容的提问来源于stack exchange,提问作者ravi
相关产品推荐
相关产品推荐

