繁体   English   中英

带有过滤器的json路径通配符

[英]json path wildcard with filter

JSON路径语法是否提供一种将过滤器应用于通配符(*)运算符选择的所有对象的方法?

例如,在以下数据中,“ byId”和“列表”包含相同的数据,只是建模不同。

{
  "list": [
    {"id": "a", "x": 1, "y": 2},
    {"id": "b", "x": 1, "y": 3},
    {"id": "c", "x": 0, "y": 4}
  ],
  "byId": {
      "a": {
        "x": 1, 
        "y": 2
      },
      "b": {
        "x": 1,
        "y": 3
      },
      "c": {
        "x": 0,
        "y": 4
       }
  }
}

我们可以通过查询获得“列表”中x大于0的所有点

 $.list[?(@.x > 0)]

在“ byId”部分中,我们可以通过查询获取所有点的列表

$.byId.*

但是,有没有一种方法可以使用jsonpath查询语法获取x大于0的“ byId”部分中的所有点?

事实证明,它非常简单,而且不是大多数地方都展示的示例。 对于上述问题,答案仅仅是

 $.byId[?(@.x>0)]

显然,不需要通配符。

暂无
暂无

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

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