首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JQ过滤GeoJSON

用JQ过滤GeoJSON
EN

Stack Overflow用户
提问于 2014-11-04 17:13:55
回答 2查看 971关注 0票数 4

给定这个JSON

代码语言:javascript
复制
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "MODE": "A"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -69.23583984375,
          45.460130637921004
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "MODE": "D"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -69.23651039600372,
          45.46053888199693
        ]
      }
    }
  ]
}

我想使用jq过滤并选择拥有MODE: D属性的features。据我所知,查询jq .[] | select(.MODE == "D")应该可以工作,但它不工作!

我遗漏了什么?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-04 17:56:44

jq ' .. | select( has("properties") )? | select( .properties.MODE == "D")'

问号告诉jq忽略错误。那个..。是递归到对象中

jq '.features[] | select(.properties.MODE == "D")'

将得到您所追求的结果,而不需要递归,只需注意方法中的差异。

参考:https://github.com/stedolan/jq/issues/610

票数 2
EN

Stack Overflow用户

发布于 2014-11-04 17:56:52

你错过了很多。您使用了.[],但这应该实现什么呢?MODE是特性的properties对象的属性。

代码语言:javascript
复制
.features | map(select(.properties.MODE == "D"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26741075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档