无法使用jq解析json

时间:2017-06-09 13:26:22

标签: json string parsing jq

我跟随json(文件名sample.json) -

  

{       “前缀”:“pg”,
      “fileFormat”:“gz”,
      “附加信息”:   “    {\ “pgUsername \”:\ “postgres的\”,\ “PGPASSWORD \”:\ “postgres的\”,\ “pgHostname \”:\ “pgmaster \”}“
  }

我正在使用以下命令阅读这些参数 cat sample.json | jq -r '.additionalInfo .pgPassword'

预期输出为postgres,但我得到类似[26]

的内容

我无法改变这个json。有谁知道,应该使用什么命令来获得正确的输出?提前谢谢。

2 个答案:

答案 0 :(得分:2)

感谢fromjson,无需再次调用jq两次:

jq -r '.additionalInfo|fromjson|.pgPassword' data.json
postgres

答案 1 :(得分:1)

您的json不正确(您可以在https://jsonlint.com上验证),您可以试试这个:

{
    "additionalInfo": {
        "pgUsername": "postgres",
        "pgPassword": "postgres",
        "pgHostname": "pgmaster"
    }
}

你会得到预期的结果:

$ cat data.json| jq -r '.additionalInfo .pgPassword'
postgres

修改

对于您修改后的数据,您可以使用:

$ cat data.json| jq -r '.additionalInfo' | jq '.pgPassword'
postgres

再次编辑

请查看@peak的comment - 它不需要多次执行jq,而是建议使用内置的fromjson