微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用jq按元素属性值过滤对象数组?

如何解决如何使用jq按元素属性值过滤对象数组?

jq '.[] | select(.id == "second")'

[{"id": "first", "val": 1}, {"id": "second", "val": 2}]

{"id": "second", "val": 2}

我认为您可以执行以下操作:

jq '.theList[] | select(.id == 2 or .id == 4)' array.json

解决方法

我喜欢使用jq过滤json文件:

jq . some.json

给定json包含对象数组:

{
  "theList": [
    {
      "id": 1,"name": "Horst"
    },{
      "id": 2,"name": "Fritz"
    },{
      "id": 3,"name": "Walter"
    },{
      "id": 4,"name": "Gerhart"
    },{
      "id": 5,"name": "Harmut"
    }
  ]
}

我想过滤该列表以仅显示ID值为2和4的元素,因此预期的输出为:

{
  "id": 2,"name": "Fritz"
},{
  "id": 4,"name": "Gerhart"
}

如何使用jq过滤json?我玩过select和map,但是没有任何一个可以使用,例如:

$ jq '.theList[] | select(.id == 2) or select(.id == 4)' array.json
true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。