如何使用JMESPath为指定JSON数组添加新值?
用 JMESPath 向指定数组添加元素的方案
首先得明确:JMESPath 是查询/提取/构造 JSON 的语言,不是用来直接修改原 JSON 结构的工具。要实现给数组加元素的效果,得通过构造新的 JSON 结构来完成。
针对你给出的 JSON:
{ "resource_access":{ "info-bi-test":{ "roles":[ "DB7" ] } } }
可以用下面的 JMESPath 表达式生成包含新元素的新 JSON:
{ resource_access: { "info-bi-test": { roles: resource_access."info-bi-test".roles + ["DB8"] } } }
逻辑说明
- 重新构建整个外层对象结构,保留原有层级
- 利用 JMESPath 的数组拼接运算符
+,把原roles数组和包含新元素的数组(比如["DB8"])拼接,生成包含新元素的数组
执行后得到的结果:
{ "resource_access": { "info-bi-test": { "roles": ["DB7", "DB8"] } } }
如果是用命令行工具(比如 jp 或 jmespath-cli),要确认工具支持这种结构化的表达式写法。
内容的提问来源于stack exchange,提问作者Oleg Ivanov
相关产品推荐
相关产品推荐

