Editando um valor de elemento filho JSON com jq

5

Estou tentando usar o jq para alterar o valor de uma criança. Por exemplo, quero alterar o valor de "test2" de ["yo", "bye"] para ["hi"].

{
   "title": "hello",
   "body": {
       "test1": 123,
       "test2": [
           "yo",
           "bye"  
       ]
   }
}

Até agora só consegui alterar valores de chaves que são childs da raiz. Eu não consigo descobrir como levar isso e ir para .body.test2 em vez de título:

cat test.conf | jq 'to_entries | map(if .key == "title" then . + {"value":"hello world"} else . end) | from_entries' > test2.conf
    
por Maboo 09.12.2015 / 18:38

1 resposta

10

(Publicando @glennjackman comente como uma resposta da comunidade para evitar que o sistema elide automaticamente a questão )

jq '.body.test2 = ["hi"]' will do it

    
por 13.04.2017 / 14:36