【问题标题】:Simple jq nested query简单的jq嵌套查询
【发布时间】:2023-01-03 03:46:18
【问题描述】:

新手jq嵌套字段问题。

我有以下file.json

{
    "Name": [
            {
                "key1": "value1",
                "key2": [
                    {
                        "sub-key1": false,
                        "sub-key-2": "val2",
                        "Id": "049f2fa1",
                        "Health": "Good"
                        
                    },
                    {
                         "sub-key1": false,
                        "sub-key-2": "val23",
                        "Id": "049f2c34",
                        "Health": "Bad"
                    }
                ],
                "key3": 2
            }
        ]
   } 

我正在尝试为具有特定 id 的数组元素提取字段“健康”的值

试过这个

cat file.json | jq '.Name[].key2[] | select(.Id=="049f2c34") | .Health'

但是我得到的不是Bad,而是空的(这个问题与.Name[].key2[]有关,我也试过.Name[].key2

【问题讨论】:

  • 您的 json 无效。如果我运行你的命令,我会收到一条错误消息parse error: Expected another key-value pair at line 11, column 17。所以删除}(两次)之前的逗号和开头的{
  • @jens 对,但这是我的输入文件(我不控制输入数据)。在使用 jq 之前我必须在它周围添加 {} 吗?
  • 它必须是一个有效的 json
  • 输入无效的 JSON,它在嵌套对象中有尾随逗号。 jq 只能处理 JSON,不能“看起来像 JSON”。如果输入固定为正确的 JSON,则您的 jq 程序会运行并生成“Bad”作为输出。

标签: json jq


【解决方案1】:

您可以使用命令行实用程序(例如 https://hjson.github.io/)将准 JSON 转换为 JSON。有几种这样的工具。参见例如https://github.com/stedolan/jq/wiki/FAQ#processing-not-quite-valid-json

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多