JMESPpath:通过嵌套属性过滤掉

时间:2017-12-19 15:35:34

标签: json jmespath

我正在尝试使用JMESPath jphttps://github.com/jmespath/jp)实用程序来应用过滤器。 我的目标是只拥有状态为“添加”的流程。并且已过滤掉特定设备ID(例如0000debf17cff54b)。

我正在尝试这样的事情: cat test | ./jp '[][?id=="of:00002259146f7743" && state=="ADDED"]' 但结果是[]

[
  {
    "flow": [
      {
        "ethType": "0x86dd",
        "type": "ETH_TYPE"
      },
      {
        "protocol": 58,
        "type": "IP_PROTO"
      },
      {
        "icmpv6Type": 135,
        "type": "ICMPV6_TYPE"
      }
    ],
    "id": "of:00001aced404664b",
    "state": "ADDED"
  },
  {
    "flow": [
      {
        "ethType": "0x86dd",
        "type": "ETH_TYPE"
      },
      {
        "protocol": 58,
        "type": "IP_PROTO"
      },
      {
        "icmpv6Type": 136,
        "type": "ICMPV6_TYPE"
      }
    ],
    "id": "of:0000debf17cff54b",
    "state": "ADDED"
  }
]

1 个答案:

答案 0 :(得分:1)

无需使用第一个[],[?id=='of:0000debf17cff54b' && state=='ADDED']正常工作。

使用第一个[]为您提供整个数组,不包含idstate个键。