我有一个json文件,在对象中包含一个json字符串:
{
"requestType": "POST",
"response": {
"size": 78,
"text": "{\"recordID\":123, \"title\":\"Hello World\", \"content\":\"Lorem ipsum...\"}"
}
}
我需要使用json命令行interpereter 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"
?
答案 0 :(得分:33)
使用fromjson
。
它将字符串解析为适当的json值。 tojson
(和@json
)反过来采用json值并将其转换为字符串。
所以你可以这样做:
.response.text | fromjson.title
答案 1 :(得分:2)
您也可以这样做:
jq -r '.response.text' | jq '.recordID'