如何仅使用JMESPath解析编码为字符串的JSON对象属性
用JMESPath解析字符串格式的JSON对象
嘿,这个需求其实用JMESPath自带的from_json()函数就能搞定,不用额外工具,直接一步到位!
首先得明确:JMESPath 1.0及以上版本提供了from_json()函数,专门用来把JSON格式的字符串转换成可操作的JMESPath对象。刚好AWS相关工具(比如AWS CLI v2)里的JMESPath版本都支持这个函数,完美匹配你提到的SecretsManager场景。
举个更完整的例子,假设你的原始对象其实是这样的(补全了存JSON字符串的SecretString属性,这也是SecretsManager返回的典型结构):
{ "ARN": "arn:aws:secretsmanager:us-east-1:xxxxx:secret:todobackend/db/credentials-AP57Kn", "Name": "todobackend/db/credentials", "VersionId": "c95...", "SecretString": "{\"username\":\"db-admin\",\"password\":\"MyStrongPass123\"}" }
具体操作步骤
第一步:解析字符串属性
用from_json(SecretString)就能把SecretString里的JSON字符串转换成可操作的JMESPath对象,执行后会得到:{"username":"db-admin","password":"MyStrongPass123"}第二步:直接操作解析后的对象
如果要提取里面的username,直接在表达式后面加属性访问即可:from_json(SecretString).username,执行后会返回:"db-admin"复杂操作也支持
比如要同时提取用户名和密码,用JMESPath的投影语法:from_json(SecretString).[username, password],会返回:["db-admin", "MyStrongPass123"]
注意事项
- 确保你的JMESPath解析器版本在1.0以上,比如AWS CLI v2默认支持,v1可能需要升级;
- 被解析的字符串必须是合法的JSON格式,不然
from_json()会返回错误。
内容的提问来源于stack exchange,提问作者mixja




