2016-06-08 20 views
9

Sto usando jq per riformare il mio JSON.Campi Concat 2 in JSON utilizzando jq

JSON String:

{"channel": "youtube", "profile_type": "video", "member_key": "hello"}

uscita Ricercato:

{"channel" : "profile_type.youtube"}

mio comandamento:

echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '. | {channel: .profile_type + "." + .member_key}' 

so che il comando seguente concatena la stringa. Ma non sta funzionando nella stessa logica di cui sopra:

echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '.profile_type + "." + .member_key' 

Come posso raggiungere il mio risultato utilizzando solo JQ?

+0

penso che sto cercando di fare esattamente la stessa cosa con il mio script API di YouTube;) –

risposta

15

Utilizzare le parentesi intorno alla vostra codice di concatenazione di stringhe:

echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq '{channel: (.profile_type + "." + .channel)}' 
+0

Considerare l'utilizzo di interpolazione stringa, invece, molto più pulita rispetto molteplici concatenazioni di stringhe. –

3

Ecco una soluzione che utilizza l'interpolazione stringa come Jeff suggerito:

{channel: "\(.profile_type).\(.member_key)"} 

esempio

$ jq '{channel: "\(.profile_type).\(.member_key)"}' <<EOF 
> {"channel": "youtube", "profile_type": "video", "member_key": "hello"} 
> EOF 
{ 
    "channel": "video.hello" 
}