如何通过Jolt Processor将JSON数据转换为键值对格式?
Jolt转换方案:将键值对结构转为key-value对象数组并修改指定字段
需求说明
需要将输入JSON中alertArray内properties数组的键值对对象,转换为包含key和value字段的对象数组,同时完成两处修改:
- 将
ConnectorID的value从"1"改为"2" - 将
IDTag的key替换为"DTag"
输入JSON
{ "tenantId": "master", "transactionId": "838", "alertArray": [ { "alertType": "info", "priority": "low", "data": "new", "properties": [ { "ConnectorID": "1", "ConnectorType": "IEC_60309", "IDTag": "A5270529", "abc": "xyz", "pqr": "rst", "bals": "ahjdgcd" } ] } ] }
Jolt转换规格
[ { "operation": "shift", "spec": { "tenantId": "tenantId", "transactionId": "transactionId", "alertArray": { "*": { "alertType": "alertArray[&1].alertType", "priority": "alertArray[&1].priority", "data": "alertArray[&1].data", "properties": { "*": { // 处理ConnectorID:修改value为2 "ConnectorID": { "$": "alertArray[&4].properties[].key", "#2": "alertArray[&4].properties[].value" }, // 处理IDTag:修改key为DTag "IDTag": { "#DTag": "alertArray[&4].properties[].key", "@": "alertArray[&4].properties[].value" }, // 其他字段直接映射key和value "*": { "$": "alertArray[&4].properties[].key", "@": "alertArray[&4].properties[].value" } } } } } } } ]
转换规则解释
- 顶层字段保留:直接映射
tenantId、transactionId以及alertArray内的alertType、priority、data字段,保持原有结构。 - ConnectorID处理:用
#2硬编码替换原value,同时保留原key名称。 - IDTag处理:用
#DTag替换原key名称,保留原value不变。 - 通用字段处理:对其他所有键值对,将键名作为
key字段值,键值作为value字段值,自动生成对应的对象。
期望输出JSON
{ "tenantId": "master", "transactionId": "838", "alertArray": [ { "alertType": "info", "priority": "low", "data": "new", "properties": [ { "key": "ConnectorID", "value": "2" }, { "key": "ConnectorType", "value": "IEC_60309" }, { "key": "DTag", "value": "A5270529" }, { "key": "abc", "value": "xyz" }, { "key": "pqr", "value": "rst" }, { "key": "bals", "value": "ahjdgcd" } ] } ] }
内容的提问来源于stack exchange,提问作者Neeraj
相关产品推荐
相关产品推荐

