如何从包含值的JSON对象中的数组中删除元素

毫米磅

请注意,该帖子已被标记jq,我完全不尝试使用javascript。

我有一个对象,该对象具有数组作为其字段之一。我想从对象数组中删除符合条件的元素,但要保留对象。我环顾四周,我只能发现一些片段,返回恰好现在包含较少项的数组。

这是一个例子:

{
  "foo": "bar",
  "events": [
    {
      "id": 1,
      "msg": "starting"
    },
    {
      "id": 2,
      "msg": "working on it"
    },
    {
      "id": null,
      "msg": "done"
    }
  ]
}

我想找回以下信息:

{
  "foo": "bar",
  "events": [
    {
      "id": 1,
      "msg": "starting"
    },
    {
      "id": 2,
      "msg": "working on it"
    }
  ]
}

注意:万一这会影响答案,我真的只对最后一个元素感兴趣。我计划在以下管道阶段中建立一个新对象,例如:

jq '$answer | {bar:.foo, event: .events[-1].msg}`

我都尝试过

select(.events[].id != null)

del(.events[], select(.id == null)))

没有运气。

伊尼安

我认为您可能正在寻找以下jq过滤器。表达式.events[] | select(.id == null)将键返回到id值为空的对象,del()删除该键/值对。

jq 'del(.events[] | select(.id == null))'

附带说明一下,如果您只想按索引删除元素,则可以按以下方式使用。下面的示例从索引2中删除该元素,该数组实际上从0开始。

jq 'del( .events[2] )'

但是请记住,对于您的原始问题,不建议使用这种方法,因为您不知道键的哪个索引将包含空值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除json数组元素中的对象?

尝试从包含对象的数组中删除元素

如何删除json对象数组中的空值

按值从JSON对象中删除元素

如何从嵌套对象数组中删除元素?

java + json:如何从包含对象数组{[{},{}]}的json对象中获取元素

MongoDB - 如果对象包含低于 x 的值,如何删除数组中的对象?

递归删除嵌套json对象中包含空数组的对象

如何从对象中的数组中删除元素并返回新对象?

如何从对象数组中删除值?

如何从对象数组中删除虚假值

如何从包含在 formData() 中的数组中删除元素

如何从golang的JSON数组中删除元素?

如何使用 react 访问包含在 JSON 格式中的对象数组中的特定元素?

如何从包含多个数组的对象中删除数组

仅返回对象中包含特定值的数组元素

删除对象数组中的元素

从对象数组中删除元素

删除对象数组中的元素

从对象数组中删除元素

从对象数组中删除元素

如何从JSON对象数组中删除具有特定键/值对的所有JSON对象?

如何按 ID 从 JSON 对象数组中删除数组元素

如何从存储在json对象中的数组中删除元素?| 角js | 范围

如何检查JSON对象数组是否包含数组中定义的值?

如何从包含多个数组的数组中删除空值?

如何从 json 对象中删除索引值

如何在包含嵌套对象的对象数组中搜索值

如何从ImmutableJS中的对象内部的数组中删除元素