I have a little issue with some sorting in my Groovy scrip and I am not sure why it is not working as expected.
Below is the JSON I am trying to sort:
I am trying to sort this JSON by 'policyid' but it doesn't seem to sort it and I have no idea why it isn't as to me the code seems correct:
def testsort = json.groups.options.flatten()
log.info testsort.sort{a,b -> a.policyid <=> b.policyid}
[{passengerSeqIds=[1], policyId=34, cost=40.0000, optionalPassengerSeqIds=[]},
{passengerSeqIds=[2], policyId=31, cost=25.0000, optionalPassengerSeqIds=[]},
{passengerSeqIds=[1, 2], policyId=35, cost=72.0000, optionalPassengerSeqIds=[]}]
[{passengerSeqIds=[2], policyId=31, cost=25.0000, optionalPassengerSeqIds=[]},
{passengerSeqIds=[1], policyId=34, cost=40.0000, optionalPassengerSeqIds=[]},
{passengerSeqIds=[1, 2], policyId=35, cost=72.0000, optionalPassengerSeqIds=[]}]
There is a typo in your code:
log.info testsort.sort{a,b -> a.policyid <=> b.policyid}
You access policyid
field while it should be policyId
. Change mentioned line to:
log.info testsort.sort{a,b -> a.policyId <=> b.policyId}
and you will get the output:
[policyId:31, passengerSeqIds:[2], optionalPassengerSeqIds:[], cost:25]
[policyId:34, passengerSeqIds:[1], optionalPassengerSeqIds:[], cost:40]
[policyId:35, passengerSeqIds:[1, 2], optionalPassengerSeqIds:[], cost:72]