在JMESPATH中满足条件时替换数组中的指定元素
解决方法
你不需要用join(),它本来就是用来把数组转成字符串的,和你要输出数组格式的需求完全冲突。正确的做法是用map()处理数组后,直接把处理后的数组转成格式化的JSON字符串即可。
示例代码(以JavaScript为例)
// 输入的JSON字符串 const input = `{ "a": [ "foo", "bar", "test" ] }`; // 解析JSON为JavaScript对象 const parsedData = JSON.parse(input); // 遍历数组,替换指定元素 const resultArray = parsedData.a.map(item => { return item === "bar" ? "bar_new" : item; }); // 转成带缩进格式的JSON字符串输出 console.log(JSON.stringify(resultArray, null, 2));
效果说明
- 当输入数组包含"bar"时,输出就是替换后的数组JSON:
[ "foo", "bar_new", "test" ] - 当输入数组没有"bar"时,
map()会原样返回原数组的元素,输出就是原数组的JSON格式:[ "foo", "test" ]
核心逻辑是:map()本身就会返回处理后的数组,之后用JSON.stringify()把这个数组转成符合格式要求的JSON字符串,这样输出就是严格的数组结构,完全符合你的需求。
内容的提问来源于stack exchange,提问作者mAkus
相关产品推荐
相关产品推荐

