JMESPath 搜索嵌套数据中的键

ck3*_*3mp 6 python json python-3.x jmespath

我正在尝试使用 JMESPath 的 Python 库从大型 JSON 文件中提取信息,这里有一个简单得多的示例:

{
  "high_name":"test",
  "sections":[
     {
        "name":"section1",
        "item":"string1"
     },
     {
        "name":"section2",
        "item":"string2",
        "items_sub":[
           {
              "item":"deeper string1"
           }
        ]
     }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得这样的输出:

{
  "high_name":"test",
  "sections":[
     {
        "name":"section1",
        "items":[
           "string1"
        ]
     },
     {
        "name":"section2",
        "items":[
           "string1",
           "deeper string1"
        ]
     }
  ]
}
Run Code Online (Sandbox Code Playgroud)

更深的字符串可以是 1 到 3 层深,具体取决于部分的类型。我需要搜索键来获取所有匹配的item名称。

我已经使用 jsonpath-rw-ext 成功完成了此操作,但想知道是否可以使用 JMESPath 来消除对两个库的依赖?

我似乎无法找到一种方法来搜索所有子键,无论它们在 JMESPath 中的级别如何。

JSONPATH-RW-EXT 的工作字符串:

$.sections[*]..item
Run Code Online (Sandbox Code Playgroud)

使用 JMESPath 的最佳尝试(不起作用):

sections[*].*.item
Run Code Online (Sandbox Code Playgroud)