2015-12-27 3 views
18

Ich mag den Strom von Objekten konvertieren:Wie kombiniere ich die Reihenfolge der Objekte in jq zu einem Objekt?

{ 
    "a": "green", 
    "b": "white" 
} 
{ 
    "a": "red", 
    "c": "purple" 
} 

in ein Objekt:

{ 
    "a": "red", 
    "b": "white", 
    "c": "purple" 
} 

Auch, wie kann ich die gleiche Sequenz in ein Array wickeln?

Leider fehlt das Handbuch ernsthaft in der Vollständigkeit, und googeln findet auch nicht die Antworten.

+0

Wie haben Sie diesen Eingang erhalten? ist die Sequenz, die durch einen jq-Befehl erstellt wird, der durch etwas wie [.] gefiltert wird, oder ist es wirklich der ursprüngliche Zustand der Eingabe, die Sie bekommen? Wenn ersteres, was beim Start mit gültigem JSON sehr oft der Fall ist, dann kann der jq-Befehl, der zu der Sequenz führte, wahrscheinlich leicht modifiziert werden, um ein Array auszugeben, indem er den iterativen Verarbeitungsbefehl mit [und] umgibt, anstatt zu pipen zwei jq-Befehle zusammen, von denen der zweite -s verwenden würde – mwag

Antwort

26

Wenn Ihre Eingabe ein Strom von Objekten ist, müssen sie "geschlürft" werden, z. Verwenden Sie die Befehlszeilenoption -s, um sie zu kombinieren.

So Objekte in dem Eingangsstrom zu kombinieren, verwenden:

jq -s add 

Für das zweite Problem, ein Array zu erstellen:

jq -s . 

(Es gibt natürlich auch andere Alternativen, aber diese sind einfach und benötigen nicht die neueste Version von jq. Mit jq 1.5 können Sie 'Eingänge' verwenden, zB jq -n '[inputs]')

+0

Tatsächlich, 'jq -s 'add'' macht, was ich gefragt habe. Vielen Dank! –

+2

@JenniferM. Anstatt einen * Dank * Kommentar zu hinterlassen, können Sie auch [Antwort akzeptieren] (http://stackoverflow.com/help/someone-answers) – rene

+0

Wie sieht es aus, wenn die Sequenz als Ergebnis eines Ausdrucks angezeigt wird ..? als ' | add 'tut nicht ganz das, was ich will. – Kaos

0

Eine andere Alternative zum Schlürfen ist die Verwendung der inputs Variable. So erzeugt jq '[inputs] | add' ein Objekt mit allen kombinierten Eingabeobjekten.

Verwandte Themen