This one-liner pivots data from group>users
or user>groups
:
$ cat incoming.json \
| jq 'map(. as $in | .users[] | . as $u | {user:$u, group:$in.group}) | group_by(.user) | map({user:.[0].user, groups: map(.group)})'
[
{
"user": "user-1",
"groups": [
"grp-1",
"grp-3"
]
},
{
"user": "user-2",
"groups": [
"grp-3"
]
},
{
"user": "user-3",
"groups": [
"grp-1",
"grp-2"
]
}
]
Great sample script for pivoting JSON data!