0

我有以下 JSON 结构:

{
    "key" : "value",
    "array" : [
        { "key" : 1 },
        { "key" : 2, "misc": {
                "a": "Apple",
                "b": "Butterfly",
                "c": "Cat",
                "d": "Dog"
            } },
        { "key" : 3 }
    ],
    "tokenize" : {
         "firstkey" : {
                      "token" : 0
                    },
         "secondkey" : {
                      "token" : 1
                    },
         "thirdkey" : {
                      "token" : 0
                    }
      }

}

我可以通过以下语法遍历上述结构,直到 array->dictionary->b:

$.array[?(@.key=2)].misc.b

现在我需要打印所有值为 0 的标记。如上所示,我可以遍历到 $.array[?(@.key=2)].tokenize。

如何查询它以打印所有具有 token:0 的值。

准确地说,我希望输出显示为:

[

      "tokenize" : {
         "firstkey" : {
                      "token" : 0
                    },
         "thirdkey" : {
                          "token" : 0
                        }
          }
]

以下查询已经显示了我想要的内容,但它没有显示键(在这种情况下为“firstkey”和“thirdkey”)。

 $.tokenize[?(@.token == 0)]

请帮助我也得到这个。

谢谢。

4

2 回答 2

1

你可以试试这个脚本。

$.tokenize[?(@.token == 0)].token

结果:

[
    0,
    0
]
于 2017-11-18T16:49:58.430 回答
0
$.tokenize[?(@.token == 0)]~

将输出

[
  "firstkey",
  "thirdkey"
]

对于 OP 的示例 json,请使用https://jsonpath-plus.github.io/JSONPath/demo/来验证您的数据。

于 2020-07-27T13:17:02.747 回答