Узнайте конкретный элемент с уникальным идентификатором из массива json - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть массив json, и я хочу сгруппировать недели по идентификатору человека, как указано в примере ниже. Я попробовал код, но не смог его получить, потому что я новичок в коде без маркеров. Массив JSON выглядит следующим образом: -

[{ "Часы": "5,500", "Статус": "Проект", "Неделя": "17", "PERSON_NAME": "Раджа", "person_id": "1414"}, { "Часы": "0,500", "Статус": "Проект", "Неделя": "17", "PERSON_NAME": "Раджа", "person_id": "1414"}, { "Часы": "24,500", "Статус": "Проект", "Неделя": "PERSON_NAME" "14": "Мукеш", "person_id": "1046"}, { "Часы": "7,500", "Статус": "Проект", "Неделя": "15", "PERSON_NAME": "Мукеш", "person_id": "1046"}, { "Часы": "3,000", "Статус": "Проект", "Неделя": "16", "PERSON_NAME": "Мукеш", "person_id": "1046"}]

Пожалуйста, помогите мне. Выход ниже для идентификатора {1046: [14,15,16], 1414: [17,17]}

1 Ответ

0 голосов
/ 27 апреля 2018

Такого рода реструктуризация не должна выполняться внутри шаблона. Хотя FTL может складывать вместе значения, подобные карте, а также значения, похожие на списки, было бы очень неэффективно взламывать это вместе с этим (это только для очень простых задач). Записи должны быть уже сгруппированы перед передачей данных в шаблон.

Если вам нужно инициировать это из шаблона, то вам понадобится служебный объект Java, у которого есть метод, который выполняет эту группировку, или реализация TemplateMethodModelEx, которая это делает. Затем вы вызываете этот служебный объект из шаблона (например, utils.groupByPersonId(foo) или groupByPersonId(foo)). Такие служебные объекты могут быть представлены шаблону различными способами: как часть модели данных, глобально как «общая переменная» через объект freemarker.tempalte.Configuration, или гарантируя, что утилита TemplateMethodModelEx (или любая другая TemplateModel) ) класс виден для Java, а затем сделать что-то вроде <#assign groupByPersonId = 'com.example.GroupByPersonIdMethod'?new()> в шаблоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...