【问题标题】:Not able to parse the json using jq无法使用 jq 解析 json
【发布时间】:2017-06-09 13:26:22
【问题描述】:

我有以下 json(文件名 sample.json)-

{ "前缀": "pg",
"文件格式": "gz",
“附加信息”: " {\"pgUsername\":\"postgres\",\"pgPassword\":\"postgres\",\"pgHostname\":\"pgmaster\"}"
}

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

预期输出是postgres,但我得到类似[26]的东西

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

【问题讨论】:

    标签: json string parsing jq


    【解决方案1】:

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

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

    【讨论】:

    • 我不知道fromjson 方法。您的解决方案要好得多,会在我的回答中提到。
    【解决方案2】:

    你的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

    【讨论】:

    • 我还有一些文件以及上一个文件。因此,我已相应地编辑了问题,并在您提供的链接上对其进行了验证。
    • 有效!!感谢您的快速更新和快速回复。对此,我真的非常感激。再次感谢!
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多