首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JQ将JSON字符串

如何使用JQ将JSON字符串
EN

Stack Overflow用户
提问于 2020-04-29 08:25:32
回答 2查看 2K关注 0票数 3

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

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

代码语言:javascript
运行
复制
{
  "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\"]}"
}

我需要将所有这些内容转换为以下字符串:

代码语言:javascript
运行
复制
"{\"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\\\"]}\"}"

这样,我就可以将该字符串插入到另一个JSON对象的text字段下,以创建以下内容。

代码语言:javascript
运行
复制
{
      "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"
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-29 09:33:00

简而言之,tostring是你的朋友。

假设您的原始JSON对象位于一个名为object.json的文件中,并且模板位于template.json中,您可以这样写:

代码语言:javascript
运行
复制
jq --argfile object object.json '.text = ($object | tostring)' template.json

不用说,在这个主题上有许多变体,例如

代码语言:javascript
运行
复制
jq -n 'input | input + {text: tostring}' \
   object.json template.json

或者更简洁,如果稍微模糊一些的话:

代码语言:javascript
运行
复制
jq 'input + {text: tostring}' object.json template.json
票数 3
EN

Stack Overflow用户

发布于 2021-07-17 17:44:20

我发现@peak在他们自己的答案中的评论非常有用,我想让它自己成为一个答案:

代码语言:javascript
运行
复制
$ echo '{ "foo": [ "bar", "baz" ] }' | jq tostring
"{\"foo\":[\"bar\",\"baz\"]}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61492210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档