我正在尝试根据某个字段对某些数据(类数组)进行排序。 但是数据未正确排序:
FCresJsonParse.sort { a,b -> b.residents.Name<=> a.residents.Name}
示例JSON如下所示:
{
"residents" : [
{
"linkedin" : null,
"updated" : "2018-05-31",
"twitter" : null,
"organization" : null,
"title" : null,
"Name" : "Abc",
"bio" : null,
}, {
"linkedin" : null,
"updated" : "2018-05-31",
"twitter" : null,
"organization" : null,
"title" : null,
"Name" : "xyz",
"bio" : null,
}]
}
答案 0 :(得分:0)
您正在调用.sort {}
方法的对象是什么?我假设变量FCresJsonParse
是从
new JsonSlurper().parseText(jsonText)
或类似的东西。在这种情况下,FCresJsonParse
是LazyMap
个实例,因此如果您在其上调用.sort {}
方法,请执行以下操作:
FCresJsonParse.sort { a,b -> b.residents.Name<=> a.residents.Name}
您不会按预期排序FCresJsonParse.residents
数组(按降序排列)。但是,如果你打电话:
FCresJsonParse.residents.sort { a,b -> b.Name<=> a.Name}
它将按降序对数组进行排序。在这种情况下,您可以尝试对此数组进行排序并将其分配回字段,例如
FCresJsonParse.residents = FCresJsonParse.residents.sort { a,b -> b.Name<=> a.Name}
然后你会得到FCresJsonParse
类似于:
[residents:[[linkedin:null, updated:2018-05-31, twitter:null, organization:null, title:null, Name:xyz, bio:null], [linkedin:null, updated:2018-05-31, twitter:null, organization:null, title:null, Name:Abc, bio:null]]]