Я работаю над приложением, которое общается с сервером и отправляет данные на веб-сайт, соответственно, получает данные с этого веб-сайта. Данные составят около 5 расписаний, которые являются необязательными.Преобразование объекта в JSON String с Jackson
См., Например, если установлено 3 расписания, и я хочу отменить выбор одного из них, он должен отправить на веб-сайт только 2 расписания. Вот проблема.
Я анализирую свой код, и я пришел к выводу, что проблема заключается в методе преобразования объекта в JSON String.
Вот код:
public class PriorityResponse {
@JsonProperty("priority1")
public Priority priorityOne;
@JsonProperty("priority2")
public Priority priorityTwo;
@JsonProperty("priority3")
public Priority priorityThree;
@JsonProperty("priority4")
public Priority priorityFour;
@JsonProperty("priority5")
public Priority priorityFive;
public Priority getPriorityOne() {
return priorityOne;
}
public Priority getPriorityTwo() {
return priorityTwo;
}
public Priority getPriorityThree() {
return priorityThree;
}
public Priority getPriorityFour() {
return priorityFour;
}
public Priority getPriorityFive() {
return priorityFive;
}
public String toJsonObject(){
String jsonInString = "";
ObjectMapper mapper = new ObjectMapper();
//Object to JSON in String
try {
jsonInString = mapper.writeValueAsString(this);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return jsonInString;
}
}
На этой линии
jsonInString = mapper.writeValueAsString(this);
строка равна нулю, но при возвращении jsonInString, посылает 3 расписание, а не 2. Если я внести другие изменения , он отправляет правильные данные, проблема заключается только в том, что я хочу отменить выбор одного или нескольких расписаний.
Результат должен быть, как это, когда я отменить приоритет4:
{"priority5":{"number":null,"timeOut":null,"timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":false,"op":true},"fri":true,"mon":true,"sat":true,"sun":true,"thu":true,"tue":true,"wed":true}},"priority4":{"number":null,"timeOut":null,"timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":false,"op":true},"fri":true,"mon":true,"sat":true,"sun":true,"thu":true,"tue":true,"wed":true}},"priority1":{"number":"1234561231","timeOut":"9","timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":false,"op":true},"fri":true,"mon":true,"sat":false,"sun":false,"thu":true,"tue":true,"wed":true}},"priority3":{"number":"21515211545","timeOut":"","timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":true,"op":false},"fri":false,"mon":true,"sat":false,"sun":false,"thu":true,"tue":true,"wed":false}},"priority2":{"number":"789123156421","timeOut":"","timeTable":{"time":{"fh":"04","fm":"02","th":"13","tm":"07","cl":false,"op":false},"fri":true,"mon":true,"sat":true,"sun":true,"thu":true,"tue":true,"wed":true}}}
, но, кажется, что строка JSON не обновляется, когда я отменить один приоритет, поскольку отправляется в тот же приоритет, что я получаю начальный , Вот что отправляется:
{"priority5":{"number":null,"timeOut":null,"timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":false,"op":true},"fri":true,"mon":true,"sat":true,"sun":true,"thu":true,"tue":true,"wed":true}},"priority4":{"number":"12233456545","timeOut":"6","timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":false,"op":true},"fri":true,"mon":true,"sat":false,"sun":false,"thu":true,"tue":true,"wed":true}},"priority1":{"number":"1234561231","timeOut":"9","timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":false,"op":true},"fri":true,"mon":true,"sat":false,"sun":false,"thu":true,"tue":true,"wed":true}},"priority3":{"number":"21515211545","timeOut":"5","timeTable":{"time":{"fh":null,"fm":null,"th":null,"tm":null,"cl":true,"op":false},"fri":false,"mon":true,"sat":false,"sun":false,"thu":true,"tue":true,"wed":false}},"priority2":{"number":"789123156421","timeOut":"5","timeTable":{"time":{"fh":"04","fm":"02","th":"13","tm":"07","cl":false,"op":false},"fri":true,"mon":true,"sat":true,"sun":true,"thu":true,"tue":true,"wed":true}}}
Похоже, что этот вопрос пытается использовать Джексон. Пожалуйста, уважайте это намерение. –