2014-11-04 1 views
2

와 내가 통해 필터링하고 MODE: D 속성을 가지고 features을 선택 jq을 사용하고 싶습니다이 JSON을은 필터링 GeoJSON은 JQ

{ 
    "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 .[] | select(.MODE == "D")가 작동해야하지만 그렇지 않습니다!

무엇이 누락 되었습니까?

미리 감사드립니다.

답변

2

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

물음표는 오류를 무시하는 JQ를 알려줍니다. 에 .. 객체로 재귀하는 것입니다

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

단지 방법을 참조

의 차이에 주목하는 것이 당신에게 당신이 재귀없이 후있는 결과를 얻을 수 있습니다 : https://github.com/stedolan/jq/issues/610

1

당신을 ' 다시 실종됐다. .[]을 사용했는데 그게 성취해야 할 대상이 무엇입니까? MODE은 기능의 객체입니다 (properties).

.features | map(select(.properties.MODE == "D"))