I am trying to sort this source data outeractivities
by outer_name
and, then, activities
by and inner_name
:
Sourcedata.json:
[
{
"outeractivities": [
{
"outer_name": "2"
},
{
"outer_name": "1",
"activities": [
{
"inner_name": "B"
},
{
"inner_name": "A"
}
]
}
]
}
]
Expected output:
[
{
"outeractivities": [
{
"activities": [
{
"inner_name": "A"
},
{
"inner_name": "B"
}
],
"outer_name": "1"
},
{
"outer_name": "2"
}
]
}
]
By using
cat Sourcedata.json | jp "[].{outeractivities:sort_by(outeractivities[]. \
{outer_name:outer_name, activities:sort_by(activities[].{inner_name:inner_name},&inner_name) \
},&outer_name) \
}"
I will get the exception:
Error evaluating JMESPath expression: Invalid type for: <nil>, expected: []jmespath.jpType{"array"}
If I change
{
"outer_name": "2"
}
to
{
"outer_name": "2",
"activities": []
}
It does work.
How can I fix this?