【问题标题】:Convert string to json in jq在jq中将字符串转换为json
【发布时间】: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"

【问题讨论】:

    标签: json command-line jq


    【解决方案1】:

    使用fromjson

    它将字符串解析为相应的 json 值。 tojson(和@json)反其道而行之,获取一个 json 值并将其转换为字符串。

    所以你可以这样做:

    .response.text | fromjson.title
    

    【讨论】:

    • 非常感谢!我完全错过了文档中的那部分!
    【解决方案2】:

    您也可以这样做:

    jq -r '.response.text' | jq '.recordID'
    

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 1970-01-01
      • 2021-09-03
      • 2021-10-21
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      相关资源
      最近更新 更多