如何用Jolt提取JSON数组指定键值对并移除原数组对应对象
Jolt处理:提取attrs中Details字段并移除原数组对象
问题描述
需要提取JSON中attrs数组里name为Details的对象,将其value作为顶级字段追加到输出JSON,同时移除attrs数组内的该对象。目前已成功添加顶级字段,但原数组中仍保留该对象,需解决移除问题。attrs.name = "Details"可位于数组任意位置。
输入输出示例
输入JSON
{ "description": "Data", "number": "2022", "version": 1, "attrs": [ { "name": "Type", "value": "DataPack" }, { "name": "customerName", "value": "ABC" }, { "name": "Details", "value": { "createdDate": "2020-09-10", "description": "Value Pack", "id": "20020", "state": "Complete", "requestedCompletionDate": "2022-09-13" } } ] }
期望输出JSON
{ "description": "Data", "number": "2022", "version": 1, "attrs": [ { "name": "Type", "value": "DataPack" }, { "name": "customerName", "value": "ABC" } ], "Details": { "createdDate": "2020-09-10", "description": "Value Pack", "id": "20020", "state": "Complete", "requestedCompletionDate": "2022-09-13" } }
当前输出JSON(存在问题)
{ "description": "Data", "number": "2022", "version": 1, "attrs": [ { "name": "Type", "value": "DataPack" }, { "name": "customerName", "value": "ABC" }, { "name": "Details", "value": { "createdDate": "2020-09-10", "description": "Value Pack", "id": "20020", "state": "Complete", "requestedCompletionDate": "2022-09-13" } } ], "Details": { "createdDate": "2020-09-10", "description": "Value Pack", "id": "20020", "state": "Complete", "requestedCompletionDate": "2022-09-13" } }
当前使用的Jolt配置
[ { "operation": "shift", "spec": { "attrs": { "*": { "name": { "Details": { "@(2,value)": "Details" } }, "value": "attrs[#2].value", "@name": "attrs[#2].name" } }, "*": "&" } } ]
修正后的Jolt配置
通过条件判断过滤掉attrs数组中的Details对象,修改后的配置如下:
[ { "operation": "shift", "spec": { "attrs": { "*": { "name": { "Details": { "@(2,value)": "Details" }, "*": { "@(2,name)": "attrs[#3].name", "@(2,value)": "attrs[#3].value" } } } }, "*": "&" } } ]
配置说明
- 针对
attrs数组的每个元素,先对name字段做分支判断:- 若
name为Details,仅提取其value到顶级Details字段,不向attrs数组写入该元素; - 若
name为其他值(用*匹配所有非Details的情况),则将该元素的name和value写入attrs数组对应位置;
- 若
- 顶级的
description、number、version等字段通过*: &规则直接保留,无需额外处理。
内容的提问来源于stack exchange,提问作者sturaw
相关产品推荐
相关产品推荐

