在 jq 中将字符串转换为 json
Convert string to json in jq
背景
我有一个 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"
?
使用fromjson
.
它将字符串解析为其适当的 json 值。 tojson
(和 @json
)反过来,获取 json 值并将其转换为字符串。
所以你可以这样做:
.response.text | fromjson.title
您也可以这样做:
jq -r '.response.text' | jq '.recordID'
背景
我有一个 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"
?
使用fromjson
.
它将字符串解析为其适当的 json 值。 tojson
(和 @json
)反过来,获取 json 值并将其转换为字符串。
所以你可以这样做:
.response.text | fromjson.title
您也可以这样做:
jq -r '.response.text' | jq '.recordID'