繁体   English   中英

JSONPath:使用子值过滤器获取根数组 object

[英]JSONPath: Get root array object using filter of child value

我试图获取 JSONPath 表达式来过滤我的 JSON 并使用子数组的值获取整个运动 object。

我有以下 JSON:

[{

        "name": "Soccer",
        "regions": [{
                "name": "Australia",
                "leagues": [{
                        "name": "Australia league",
                        "inplay": 5,
                    }
                ]
            }
        ]
    }, {

        "name": "Tennis",
        "regions": [{
                "name": "Germany",
                "leagues": [{
                        "name": "Germany league",
                        "inplay": 0,
                    }
                ]
            }
        ]
    }
]

我需要使用 JsonPath 表达式获取整个运动 object,其中“inplay == 0”。

结果应该是这样的:

 {

    "name": "Tennis",
    "regions": [{
            "name": "Germany",
            "leagues": [{
                    "name": "Germany league",
                    "inplay": 0,
                }
            ]
        }
    ]
}

地区和联赛计数可以 > 1 因此$[?(@.regions[0].leagues[0].inplay == 0)]不适合

试过$[?(@.regions[*].leagues[*].inplay == 0)]但它不起作用

这对我有用

$[?(@.regions[0].leagues[0].inplay == 0)]

由于 JayWay JSONPath 不直接支持(截至目前),我们利用contains作为解决方法

$[?(@.regions..inplay contains '0')]

注意:看起来 contains 的工作方式类似于“like”运算符或instr function,但此处并非如此。 如果inplay值包含 0,例如10 ,则不会提取记录(根据我的测试;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM