在jq中将字符串转换为json
Posted
技术标签:
【中文标题】在jq中将字符串转换为json【英文标题】:Convert string to json in jq 【发布时间】:2016-03-24 06:33:28 【问题描述】:背景
我有一个 json 文件,其中包含一个对象内的 json 字符串:
"requestType": "POST",
"response":
"size": 78,
"text": "\"recordID\":123, \"title\":\"Hello World\", \"content\":\"Lorem ipsum...\""
我需要使用 json 命令行解释器 jq 将 .response.text
字符串的内容解释为 json。
当我运行这个命令时:
jq '.response.text | @json'
输出:"\"\\\"recordID\\\":123, \\\"title\\\":\\\"Hello World\\\", \\\"content\\\":\\\"Lorem ipsum...\\\"\""
我得到了一些奇怪的转义 json 字符串,而不是我可以通过以下方式访问的 json:.response.text | @json | .recordID
。
我意识到@json
这个函数会接受json并输出一个json转义的字符串,所以肯定有别的办法,但是@text
似乎什么都没做。
问题
有没有办法将转义的 json 字符串转换为实际的 json,我可以使用如下命令解析:jq '.response.text | @json | .title'
并获得以下输出:"Hello World"
?
【问题讨论】:
【参考方案1】:使用fromjson
。
它将字符串解析为相应的 json 值。 tojson
(和@json
)反其道而行之,获取一个 json 值并将其转换为字符串。
所以你可以这样做:
.response.text | fromjson.title
【讨论】:
非常感谢!我完全错过了文档中的那部分!【参考方案2】:您也可以这样做:
jq -r '.response.text' | jq '.recordID'
【讨论】:
以上是关于在jq中将字符串转换为json的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 中将 JSON 字符串转换为 JSON 对象