2015-07-29 32 views
5

Dato questocome modificare un oggetto nidificato con JQ

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

mi piacerebbe ottenere questo risultato con JQ

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

Così come posso aggiungere il campo appena aggiunto? Non so quante proprietà sono a livello di root (e voglio tenerle tutte), conosco solo il nome dell'oggetto nidificato (qui "nidificato"), il nome della proprietà che vorrei aggiungere (qui "appena") e il suo valore.

risposta

9

Basta assegnare il nuovo valore all'oggetto nidificato.

.nested.freshly = "added" 
+0

ancora più veloce, grazie! – ValLeNain

1

Bene, ho scoperto me stesso come farlo. Se hai una soluzione migliore, sei più che benvenuta a darlo qui.

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

Mentre la risposta di Jeff è più pertinente, questo è anche molto utile quando la mappa contenente le chiavi viene generata in qualche altro modo. Detto questo, vorrei solo scriverlo come '.nested + = {" freshly ":" added "}' –

Problemi correlati