Невозможно отсортировать объект на заводном JSON - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь отсортировать определенные данные (массив классов) на основе определенного поля.Однако данные отсортированы неправильно:

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 голосов
/ 06 июня 2018

Для какого объекта вы вызываете метод .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]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...