使用 jq 将 GeoJSON 转换为平面 JSON

Converting GeoJSON into a flat JSON with jq

假设我有以下 GeoJSON 文件:

{
  "type": "FeatureCollection",
  "name": "geojson",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "id": 1,
        "value1": 4.7557783e-06,
        "value2": 0
      },
      "geometry": null
    },
    {
      "type": "Feature",
      "properties": {
        "id": 1,
        "value1": 1.4931199e-05,
        "value2": 5
      },
      "geometry": null
    }
  ]
}

我知道使用 cat file.geojson | jq '.features[].properties' 行我可以获得以下结果:

{
  "id": 1,
  "value1": 4.7557783e-06,
  "value2": 0 
}   
{     
  "id": 1,
  "value1": 1.4931199e-05,
  "value2": 5
}       

但是,我希望将此结果放在如下数组中:

[
  {
    "id": 1,
    "value1": 4.7557783e-06,
    "value2": 0
  },
  {
    "id": 1,
    "value1": 1.4931199e-05,
    "value2": 5
  }
]

如何添加方括号 [] 和正确的逗号 ,jq 以形成最后一个平面 JSON 文件?

您可以将整个过滤器括在方括号中

jq '[.features[].properties]' file.geojson

Demo

或者利用 .features 已经是一个数组并且只是 map 它的内容这一事实。

jq '.features | map(.properties)' file.geojson

Demo

双输出

[
  {
    "id": 1,
    "value1": 4.7557783e-06,
    "value2": 0
  },
  {
    "id": 1,
    "value1": 1.4931199e-05,
    "value2": 5
  }
]