如何将任意JSON对象转换为键值对对象数组?
解决JOLT转换:将JSON对象转为key-value对象数组
我来帮你搞定这个JOLT转换的问题!你当前的spec之所以会把所有key和value都塞进同一个对象的数组里,是因为用了#0这个索引标识——它会把所有属性都映射到split_attributes数组的同一个位置(索引0),自然就把多个键值对合并成了数组形式。
正确的JOLT Spec
只需要把索引标识从#0换成&1,就能让每个属性对应数组里的独立对象:
{ "operation": "shift", "spec": { "*": { "$": "split_attributes[&1].key", "@": "split_attributes[&1].value" } } }
为什么这个能行?
&1在这里引用的是父级节点(也就是*遍历的每个属性)的索引,每个属性会被分配到split_attributes数组的不同位置。$代表当前遍历到的属性名,作为key的值;@代表当前属性对应的值,作为value的值。这样每个属性都会生成一个独立的{key:..., value:...}对象。
验证效果
输入JSON
{ "property": "someValue", "propertyName" : "anotherValue" }
转换后输出
{ "split_attributes": [ { "key": "property", "value": "someValue" }, { "key": "propertyName", "value": "anotherValue" } ] }
完美匹配你想要的预期结果啦!
内容的提问来源于stack exchange,提问作者davdic
相关产品推荐
相关产品推荐

