繁体   English   中英

使用jq获取特定的键值对

[英]Get specific key value pairs with jq

在下面的示例json中,我可以使用jq -M ' map(select(.charge == null)) '过滤费用为null的记录

  [
    {
      "id": 1,
      "name": "vehicleA",
      "state": "available",
      "charge": 100
    },
    {
      "id": 2,
      "name": "vehicleB",
      "state": "available",
    },
    {
      "id": 3,
      "name": "vehicleB",
      "state": "available",
      "charge": 50
    }
  ]

返回:

{
  "id": 2,
  "name": "vehicleB",
  "state": "available",
}

一个人如何仅获取id和与过滤后的记录的id相关联的值,以便将该步骤添加到上述查询中将返回2

您的问题并不完全正确:

  • JSON示例无效,因为第二个对象的最后一个属性带有尾随逗号,这将引发解析错误
  • map(select(.charge == null))的输出不是示例中的对象,而是单个对象的数组

无论如何,您都可以像这样从map的结果中提取.id

jq -M 'map(select(.charge == null)) | .[].id' file.json

如果您想要不收费的商品ID数组,则可以使用以下过滤器:

.items | map(select(.charge == null) | .id)

在jqplay.org上在线尝试

如果希望枚举值而不是将其收集到数组中,则更好:

.items[] | select(.charge == null) | .id

在jqplay.org上在线尝试

暂无
暂无

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

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