2017-12-22 3 views
1

bekommen Ich habe einige JSON wie folgt aus:jq: Wie man von Arrays entsprechen und Geschwister Wert

{ 
    "x": [ 
    { 
     "name": "Hello", 
     "id": "211" 
    }, 
    { 
     "name": "Goodbye", 
     "id": "221" 
    }, 
    { 
     "name": "Christmas", 
     "id": "171" 
    } 
    ], 
    "y": "value" 
} 

Mit jq einen Namen Wert angegeben (zB Weihnachten), wie kann ich es im Zusammenhang ID erhalten (dh 171).

Ich habe so weit gekommen wie bei Anwesenheit des Namens in einem der Arrays Objekte prüfen zu können, aber ich kann aus nicht funktionieren, wie es

jq -r 'select(.x[].name == "Christmas")' 

Antwort

3

jq Ansatz filtern nach unten :

jq -r '.x[] | select(.name == "Christmas").id' file 
171 

Die Funktion select(boolean_expression) produziert seine Eingabe unverändert, wenn boolean_expression kehrt true für diesen Eingang und erzeugt sonst keine Ausgabe.

Verwandte Themen