I'm using Spring Expression Language to manipulate json due application requirements.
I have the following json response:
[
{
"steps": [
{
"id": 000,
"sequence": 4,
"type": "my_referente_value",
[...]
"route_time": {}
},
{
"id": 111,
"sequence": 5,
"type": "any_value",
[...]
"route_time": {}
}
]
},
{
"steps": [
{
"id": 222,
"sequence": 4,
"type": "my_referente_value",
[...]
"route_time": {}
},
{
"id": 333,
"sequence": 5,
"type": "any_value",
[...]
"route_time": {}
}
]
},
{
"steps": [
{
"id": 444,
"sequence": 4,
"type": "my_referente_value",
[...]
"route_time": {}
},
{
"id": 555,
"sequence": 5,
"type": "any_value",
[...]
"route_time": {}
}
]
},
{
"steps": [
{
"id": 666,
"sequence": 4,
"type": "my_referente_value",
[...]
"route_time": {}
},
{
"id": 777,
"sequence": 5,
"type": "any_value",
[...]
"route_time": {}
}
]
},
{
"steps": [
{
"id": 888,
"sequence": 4,
"type": "my_referente_value",
[...]
"route_time": {}
},
{
"id": 999,
"sequence": 5,
"type": "any_value",
[...]
"route_time": {}
}
]
}
]
I tried something like parser.parseExpression("#jsonPath(#response, '$[0].steps[?(@.type == \"my_referente_value\")]')").getValue(evaluationContext)
but I got only the first step. I'm trying to figure out how to not use the index $[0]
[
{
"steps": [
{
"id": 000,
"sequence": 4,
"type": "my_referente_value",
[...],
"route_time": {}
}
]
}
]
I would like to get only objects (or structure) with type == my_reference_value, as something like below:
"steps": [
{
"id": 000,
"sequence": 4,
"type": "my_referente_value",
[...],
"route_time": {}
},
{
"id": 222,
"sequence": 4,
"type": "my_referente_value",
[...,]
"route_time": {}
},
{
"id": 444,
"sequence": 4,
"type": "my_referente_value",
[...],
"route_time": {}
},
{
"id": 666,
"sequence": 4,
"type": "my_referente_value",
[...],
"route_time": {}
},
{
"id": 888,
"sequence": 4,
"type": "my_referente_value",
[...],
"route_time": {}
}
]
There is any way to do that only using spring expression language? Unfortunately, I can't register methods or any variables on evaluationContext, only expressions.
Thanks for any help or idea.