无法在groovy json上排序对象

时间:2018-06-06 06:32:09

标签: json groovy

我正在尝试根据某个字段对某些数据(类数组)进行排序。 但是数据未正确排序:

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,
    }]
}

1 个答案:

答案 0 :(得分:0)

您正在调用.sort {}方法的对象是什么?我假设变量FCresJsonParse是从

返回的结果
new JsonSlurper().parseText(jsonText)

或类似的东西。在这种情况下,FCresJsonParseLazyMap个实例,因此如果您在其上调用.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]]]