jsonjq

Concat 2 fields in JSON using jq


I am using jq to reformat my JSON.

JSON String:

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

Wanted output:

{"channel" : "profile_type.youtube"}

My command:

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

I know that the command below concatenates the string. But it is not working in the same logic as above:

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

How can I achieve my result using ONLY jq?


Solution

  • Use parentheses around the string concatenation code:

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