【问题标题】:Using JMESPath, filter array elements based on length of an array-valued property使用 JMESPath,根据数组值属性的长度过滤数组元素
【发布时间】:2019-09-19 10:37:39
【问题描述】:

给定这样的输入:

[
  {
    "a": "foo",
    "b": [ 1, 2, 3 ]
  },
  {
    "a": "bar",
    "b": [ ]
  },
  {
    "a": "baz",
    "b": [ 2 ]
  }
]

我想过滤出其b 属性具有零长度数组的元素:

[
  {
    "a": "foo",
    "b": [ 1, 2, 3 ]
  },
  {
    "a": "baz",
    "b": [ 2 ]
  }
]

如何使用 JMESPath 做到这一点?

【问题讨论】:

    标签: jmespath


    【解决方案1】:

    你可以使用

    [?length(b)>'0']
    

    【讨论】:

    • 这当然看起来更直观!
    • [?length(b) > 0],甚至。无需通过将数字 number length(string|array|object $subject) 与 litteral 进行比较来产生可能的副作用。
    • 在 JSON 美化器 Chrome 扩展中使用 JMESPath 时,使用数字对我造成了一些错误。但可以肯定的是,如果它有效,它是首选。
    【解决方案2】:

    我想通了,最后很简单,虽然函数名有点误导。你只需要这个:

    [?not_null(b)]
    

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 2017-03-19
      • 2021-12-25
      • 2015-01-23
      相关资源
      最近更新 更多