gpt4 book ai didi

json - 如何使用 JQ 对 JSON 进行字符串化

转载 作者:行者123 更新时间:2023-12-04 13:14:51 25 4
gpt4 key购买 nike

使用 JQ 我想获取一个复杂的 JSON 对象,其中包含作为字符串嵌入的 JSON,然后将其全部转换为一个有效的字符串,我可以轻松地将其嵌入其他 JSON 对象中。

例如,假设我有这个 json 对象:

{
"region": "CA",
"waf_rule_tags": "{\"RULEID:942100\":[\"application-multi\",\"language-multi\",\"platform-multi\",\"attack-sqli\",\"OWASP_CRS/WEB_ATTACK/SQL_INJECTION\",\"WASCTC/WASC-19\",\"OWASP_TOP_10/A1\",\"OWASP_AppSensor/CIE1\",\"PCI/6.5.2\"]}"
}

我需要把这一切变成以下字符串:
"{\"region\": \"CA\",\"waf_rule_tags\": \"{\\\"RULEID:942100\\\":[\\\"application-multi\\\",\\\"language-multi\\\",\\\"platform-multi\\\",\\\"attack-sqli\\\",\\\"OWASP_CRS/WEB_ATTACK/SQL_INJECTION\\\",\\\"WASCTC/WASC-19\\\",\\\"OWASP_TOP_10/A1\\\",\\\"OWASP_AppSensor/CIE1\\\",\\\"PCI/6.5.2\\\"]}\"}"

这样我就可以把这个字符串准确地插入到 text 下另一个 JSON 对象的字段以创建以下内容。
{
"title": "12345-accesslogs",
"text": "{\"region\": \"CA\",\"waf_rule_tags\": \"{\\\"RULEID:942100\\\":[\\\"application-multi\\\",\\\"language-multi\\\",\\\"platform-multi\\\",\\\"attack-sqli\\\",\\\"OWASP_CRS/WEB_ATTACK/SQL_INJECTION\\\",\\\"WASCTC/WASC-19\\\",\\\"OWASP_TOP_10/A1\\\",\\\"OWASP_AppSensor/CIE1\\\",\\\"PCI/6.5.2\\\"]}\"}",
"priority": "normal",
"tags": ["environment:test"],
"alert_type": "info"
}

最佳答案

简而言之,tostring是你的 friend 。

假设您的原始 JSON 对象在名为 object.json 的文件中,并且模板在 template.json 中,您可以编写:

jq --argfile object object.json '.text = ($object | tostring)' template.json

不用说,这个主题有很多变体,例如
jq -n 'input | input + {text: tostring}' \
object.json template.json

或更紧凑,如果稍微更模糊:
jq 'input + {text: tostring}' object.json template.json

关于json - 如何使用 JQ 对 JSON 进行字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61492210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com