在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的主要内容,如果未能解决你的问题,请参考以下文章

在java中将字符串转换为Json [重复]

在 Rails 中将 JSON 字符串转换为 JSON 对象

在 Freemarker 中将字符串转换为 JSON

在c#中将简单的json转换为字符串数组

如何将afnetworking json字典转换为字符串,然后在IOS中将字符串转换为字典?

在C#中将对象转换为JSON字符串[重复]