内部数组的 Jayway JsonPath 过滤器表达式

rus*_*ush 5 java jsonpath

我有以下格式的 JSON 文件。

{  
   "queryResponse":[  
      {  
         "id":"1",
         "name":"Parent1",
         "childList":[  
            {  
               "id":"11",
               "type":"A"
            },
            {  
               "id":"12",
               "type":"B"
            }
         ]
      },
      {  
         "id":"2",
         "name":"Parent2",
         "childList":[  
            {  
               "id":"21",
               "type":"B"
            },
            {  
               "id":"22",
               "type":"C"
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

使用 jayway JsonPath,如何获取所有具有“B”类型子节点的父节点?

这些过滤器表达式返回一个空数组:

  • 索引中的通配符,如$.queryResponse[?(@.childList[*].type=='B')]
  • 过滤器字段中的深度扫描运算符,如$.queryResponse[?(@.childList..type=='B')]

唯一最接近我想要的过滤器表达式是带有数组索引的表达式$.queryResponse[?(@.childList[0].type=='A')]

Aks*_*kar 0

使用containsin操作员

$.queryResponse[?(@.childList[*].type contains 'B')]
Run Code Online (Sandbox Code Playgroud)

或者

$.queryResponse[?('B' in @.childList[*].type )]
Run Code Online (Sandbox Code Playgroud)