2016-08-18 1 views
0

ich die Filter bin miteinfach jq Filter haben null Ergebnisse

[.bar_1.baz_a, .bar_1.baz_b, .bar_2.qux_1,.bar_2.qux_2] 

am folgenden JSON und es zurückkehr vier Nullen anstelle von zwei Linien, die jeweils vier Elemente Unsinn Daten. Dies ist mein erster Versuch eines Filters, welches Konzept verstehe ich nicht?

{ 
    "version": "0.1", 
    "foos": [ 
    { 
     "bar_1": { 
     "baz_a": 673396201, 
     "baz_b": "dfgsfg" 
     }, 
     "bar_2": { 
     "qux_1": "ghjhj", 
     "qux_2": "Q" 
     } 
    }, 
    { 
     "bar_1": { 
     "baz_a": 674567484, 
     "baz_b": "tyutyj" 
     }, 
     "bar_2": { 
     "qux_1": "bnmn", 
     "qux_2": "Z" 
     } 
    } 
    ] 
} 

Antwort

2

das Wurzelobjekt nicht über Tasten bar1 und bar2; Diese treten in den Objekten in dem Array auf, das dem Namen foos zugewiesen ist. Vergleichen Sie Ihren Filter mit

jq '.foos[] | [.bar_1.baz_a, .bar_1.baz_b, .bar_2.qux_1,.bar_2.qux_2]' tmp.json 
+0

Vielen Dank. Ich habe versucht, alles in einem Filter zu machen, wenn ich den einen zum nächsten hätte pinnen sollen. Als eine Bonusfrage, versagt jede Idee, warum dieses Ergebnis zu verbinden (",") fehlschlägt? –

+0

Sie können nur JSON-Strings verbinden, aber 674567484 ist eine JSON-Nummer. – chepner

+0

Danke nochmal. Ich werde nachsehen, wie man eine Zahl in eine Zeichenkette umwandelt. –