Так что уже давно сижу на этом. Я пытаюсь преобразовать эту JSON String в объект проекта. (Класс Projekt, как показано ниже)
String projectEmptyString = "{\"id\":1,\"name\":\"Seminararbeit Geschichte\",\"description\":\"Der Wilde Westen\",\"comments\":[],\"appointments\":[{\"id\":1,\"name\":\"AppointmentSample\",\"description\":\"AppointmentSample\",\"startDate\":{\"day\":1,\"month\":2,\"year\":2020,\"hour\":4,\"minute\":5},\"endDate\":{\"day\":5,\"hour\":2,\"minute\":1,\"month\":4,\"year\":3},\"type\":\"DEADLINE\"}],\"handlers\":[],\"processors\":[],\"type\":\"SEMINARARBEIT\"}";
Не работает. Я уже пришел к выводу, что если я установлю массив встреч пустым, например:
\"appointments\":[]
, преобразование работает. Так что должна быть ошибка десериализации в объект назначения .
\"appointments\":[{\"id\":1,\"name\":\"AppointmentSample\",\"description\":\"AppointmentSample\",\"startDate\":{\"day\":1,\"month\":2,\"year\":2020,\"hour\":4,\"minute\":5},\"endDate\":{\"day\":5,\"hour\":2,\"minute\":1,\"month\":4,\"year\":3},\"type\":\"DEADLINE\"}]
Я действительно хотел бы знать, в чем проблема GSON?
Класс проекта:
public class Project {
@SerializedName("id")
private int id;
@SerializedName("name")
private String name;
@SerializedName("description")
private String description;
@SerializedName("comments")
private ArrayList<Comment> comments;
@SerializedName("appointments")
private Collection<Appointment> appointments;
@SerializedName("handlers")
private Collection<User> handlers;
@SerializedName("processors")
private Collection<User> processors;
@SerializedName("type")
private ProjectType projectType;
// constructor, getter, setter,...
}
Класс встречи:
public class Appointment {
private int id;
private String name;
private String description;
private Date startDate;
private Date endDate;
@SerializedName("type")
private AppointmentType appointmentType;
// constructor, getter, setter,...
}
Странно то, что если я заполняю, например, массив комментариев данными и устанавливаю массив встреч пустым - используя ту же структуру json (I думаю) - работает нормально. см. ниже:
"[{\"id\":1,\"content\":\"Der Wilde Westen war im 19. Jahrhundert!\",\"restricted\":true,\"wasEdited\":false,\"creationTime\":{\"day\":1,\"month\":5,\"year\":2020,\"hour\":12,\"minute\":30},\"author\":{\"id\":1,\"username\":\"LuckyLuke\",\"email\":\"luckyluke@web.de\",\"roles\":[\"ROLE_ADMIN\"],\"userInfo\":{\"id\":1,\"forename\":\"Lucky\",\"surname\":\"Luke\",\"studentNumber\":1234567}}},{\"id\":2,\"content\":\"Cowboys sind ja so doof!\",\"restricted\":false,\"wasEdited\":true,\"creationTime\":{\"day\":3,\"month\":5,\"year\":2020,\"hour\":15,\"minute\":49},\"author\":{\"id\":3,\"username\":\"JackDalton\",\"email\":\"jackdalton@web.de\",\"roles\":[\"ROLE_USER\"],\"userInfo\":{\"id\":3,\"forename\":\"Jack\",\"surname\":\"Dalton\",\"studentNumber\":7654312}}}]"
Я знаю, это может быть слишком много ввода, но я действительно на грани отчаяния ..
EDIT1:
projectString показано выше
Project projekt = newGson().fromJson(projectString, Project.class);