2015-07-29 22 views
5

Vor diesemWie ein verschachteltes Objekt mit jq

{ 
    "some": "property", 
    "nested": { 
    "hello": "world" 
    } 
} 

Ich möchte dieses Ergebnis erhalten, mit jq

{ 
    "some": "property", 
    "nested": { 
    "hello": "world", 
    "freshly": "added" 
    } 
} 

So wie kann ich fügen Sie das frisch hinzugefügte Feld ändern? Ich weiß nicht, wie viele Eigenschaften auf der Stammebene sind (und ich möchte sie alle behalten), ich kenne nur den Namen des verschachtelten Objekts (hier "verschachtelt"), den Namen der Eigenschaft, die ich hinzufügen möchte (hier "frisch") und dessen Wert.

Antwort

9

Ordnen Sie den verschachtelten Objekten einfach den neuen Wert zu.

.nested.freshly = "added" 
+0

noch schneller schreiben, danke! – ValLeNain

1

Nun, ich habe selbst herausgefunden, wie es geht. Wenn Sie eine bessere Lösung haben, können Sie es hier gerne geben.

jq '.nested=(.nested + {"freshly": "added"})' 
+0

Während Jeffs Antwort ist mehr auf den Punkt, das ist auch sehr nützlich, wenn die Karte mit den Schlüsseln auf eine andere Weise generiert wird. Das heißt, ich würde es einfach als '.nested + = {" frisch ":" hinzugefügt "}' –

Verwandte Themen