Я хочу получить вывод, подобный
{ 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
Есть идеи?Или возможна другая аннотация (кроме сериализатора?)