Jolt转换:如何将多对象转为指定键值对格式?
Jolt转换调整方案
问题背景
使用Jolt转换工具处理特征数据时,需要将按arrayIndex分组的条目转换为指定的键值对格式,当前转换结果不符合预期。
输入JSON数据
{ "characteristic": [ { "name": "usageCharacteristicName", "value": "availableBalance", "@type": "usageCharacteristic", "arrayIndex": "2" }, { "name": "usageCharacteristicValue", "value": "2999.25", "@type": "usageCharacteristic", "arrayIndex": "2" }, { "name": "usageCharacteristicName", "value": "Name", "@type": "usageCharacteristic", "arrayIndex": "0" }, { "name": "usageCharacteristicValue", "value": "Jack", "@type": "usageCharacteristic", "arrayIndex": "0" }, { "name": "usageCharacteristicName", "value": "Likes", "@type": "usageCharacteristic", "arrayIndex": "1" }, { "name": "usageCharacteristicValue", "value": "Code", "@type": "usageCharacteristic", "arrayIndex": "1" } ] }
当前使用的Jolt Spec
[ { "operation": "shift", "spec": { "characteristic": { "*": { "arrayIndex": { "2": { "@(2,value)": "data.queryBalance.accountBalance" }, "0": { "@(2,value)": "data.queryBalance.Name" }, "1": { "@(2,value)": "data.queryBalance.Likes" } } } } } } ]
当前输出结果
{ "data" : { "queryBalance" : { "accountBalance" : [ "availableBalance", "2999.25" ], "Name" : [ "Name", "Jack" ], "Likes" : [ "Likes", "Code" ] } } }
期望输出格式
{ "availableBalance": "2999.25", "Name": "Jack", "Likes": "Code" }
调整后的Jolt Spec
[ { "operation": "shift", "spec": { "characteristic": { "*": { "@(1,value)": "[&1.arrayIndex].&1.name" } } } }, { "operation": "shift", "spec": { "*": { "usageCharacteristicName": "@(1,usageCharacteristicValue)" } } } ]
说明
- 第一个
shift操作:按arrayIndex将同组的特征数据归类,分别存储每组的usageCharacteristicName和usageCharacteristicValue值。 - 第二个
shift操作:遍历每组数据,将usageCharacteristicName的值作为最终键,对应usageCharacteristicValue的值作为最终值,直接生成目标键值对结构。
内容的提问来源于stack exchange,提问作者Siva Prasad Vajja
相关产品推荐
相关产品推荐

