我有一个使用JMESPath解析的对象,其中属性的值是一个编码为字符串的JSON对象。我希望能够将该字符串属性解析为JSON对象并仅使用JMESPath(我知道我可以使用JSON编码器解析该值)。
这是对象:
{
"ARN": "arn:aws:secretsmanager:us-east-1:xxxxx:secret:todobackend/db/credentials-AP57Kn",
"Name": "todobackend/db/credentials",
"VersionId": "c95fae54-e7b4-4c7f-80d6-2c5649f86570",
"SecretString": "{\"MYSQL_USER\":\"todobackend\",\"MYSQL_PASSWORD\":\"password\"}",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": 1523276277.046
}
所以我想将SecretString
属性解析为JSON对象。
关于这是否可行的任何想法?
答案 0 :(得分:2)
jq将为您节省:
import pandas as pd
columns = ['c1','c2','c3','c4','c5','c6']
values = [['A1', 'A2','A3','A4','A5','A6'],['A1','A3','A2','A5','A4','A6'],['A1','A2','A4','A3','A6','A5'],['A2','A1','A3','A4','A5','A6'], ['A2','A1','A3','A4','A6','A5'],['A1','A2','A4','A3','A5','A6']]
input = pd.DataFrame(values, columns)
columns = ['c1','c2','c3','c4','c5','c6']
values = [['A1', 'A2','A3','A4','--','--'],['A1','A3,'A2','A5','A4','--'],['A1','A2','A4','--','--','--'],['A2','A1','A3','A4','--','--'], ['A2','A1','A3','A4','--','--'],['A1','A2','A4','--','--','--']]
output = pd.DataFrame(values, columns)
答案 1 :(得分:0)
如果仅使用JMESPath,则可以尝试使用此请求来手动完成此操作:
merge(@,{SecretString: {MYSQL_USER: 'todobackend', MYSQL_PASSWORD: 'password'}})
效果很好。但是,如果您可以使用其他语言(包括js等jmespath)做到这一点,则可以通过以下方式实现:
let jsonString = JSON.stringify(JSON.parse("{\"MYSQL_USER\":\"todobackend\",\"MYSQL_PASSWORD\":\"password\"}")).split('"').join("'").replace("{'","{").split(",'").join(",").split("':").join(":");
let mainObject = {
"ARN": "arn:aws:secretsmanager:us-east-1:xxxxx:secret:todobackend/db/credentials-AP57Kn",
"Name": "todobackend/db/credentials",
"VersionId": "c95fae54-e7b4-4c7f-80d6-2c5649f86570",
"SecretString": "{\"MYSQL_USER\":\"todobackend\",\"MYSQL_PASSWORD\":\"password\"}",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": 1523276277.046
}
var data = jmespath.search(mainObject, `merge(@,{SecretString:${jsonString}})`)
拆分/合并允许将代码用于其他类似这样的字符串