多个数组的数组的JSONPath表达式

sdnqo3pr  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(193)

我有一个如下所示的json负载

{
   "data":{
      "methods":[
         [
            {
               "p_id":"01",
               "description":"Test01",
               "offline":true
            }
         ],
         [
            {
               "p_id":"02",
               "description":"Test02",
               "offline":false
            }
         ],
         [
            {
               "p_id":"03",
               "description":"Test03",
               "offline":true
            }
         ]
      ]
   }
}

如何编写JSONPath表达式以获取“p_id”,其中“offline”= false?

bttbmeg0

bttbmeg01#

您可以使用筛选器表达式来选择对象或数组中与指定筛选器匹配的所有元素。例如,如果offline属性严格为false,则[?(@.offline === false)]将与任何对象匹配。
因此,如果对象总是在同一个位置,您可以执行以下操作:

$.data.methods.*[?(@.offline === false)].p_id

或者,如果您想查找offline等于false的任何对象并获取p_id,则可以使用递归下降和过滤表达式:

$..[?(@.offline === false)].p_id

注意:我在示例中使用了strict equality,所以它只匹配布尔值false。如果你不需要,你可以简单地使用!来否定过滤器。例如[?(!@.offline)]

相关问题