#java #serialization #hashmap #jackson
#java #сериализация #hashmap #jackson
Вопрос:
Я хочу иметь вывод, подобный
{ Orga1: [ dep1, dep2], Orga2: [dep88, dep99], ...}
но почему-то мне не удается выполнить это должным образом.
У меня есть следующая структура:
@JsonSerialize(using = OrganisationSerializer.class)
public class Organisation {
String name;
private HashMap<String, Department> lstDepartments = new HashMap<>();
public List<Department> getList() {
return lstDepartments.values().stream().collect(Collectors.toList());
}
}
с помощью вложенного класса
@JsonSerialize(using = DepartmentSerializer.class)
public class Department {
String name;
HashMap<String, Role4Filter> lstRole = new HashMap<>();
public List<Role4Filter> getList() {
return lstRole.values().stream().collect(Collectors.toList());
}
...
}
Основная проблема заключается в том, что HashMap
необходимо перенести в List
, который необходимо сериализовать. Но почему-то мне не удается правильно преобразовать в JSON.
Мой подход с
public class OrganisationSerializer extends JsonSerializer<Organisation> {
@Override
public void serialize(Organisation value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeArrayFieldStart(value.name);
for (final Department item : value.getList()) {
gen.writeObject(item);
}
gen.writeEndArray();
gen.writeEndObject();
}
завершается с ошибкой, за исключением того, что
com.fasterxml.jackson.databind.JsonMappingException: org..Department cannot be cast to org..Organisation
Есть идеи? Или возможна какая-то другая аннотация (помимо сериализатора?)
Комментарии:
1. Не ясно, чего вы ожидаете. Не могли бы вы создать пример
POJO
представления и как оно должно выглядеть после сериализации?2. как упоминалось во вступлении. Объект с вложенным простым списком имен. Просто простые строки (=
name
). Но почему-то я понятия не имею, как перенести Hashmap в один,ArrayList
который будет окончательно сериализован.3. У вас есть два
POJO
класса:Organisation
иDepartment
, и у вас проблема с приведением: «org.. Отдел не может быть приведен к org.. Организация». Итак, нам нужно посмотреть пример, как вы сериализуете этиPOJO
классы. Не могли бы вы создать простое приложение, которое показывает проблему, прямо сейчас неясно, где именно она появляется.4. Хм… Исключение возникает в
OrganisationSerializer
наgen.writeObject(item)