Вопрос не совсем понятен, поэтому, я думаю, вы пытаетесь получить тело ответа, которое должно перезапустить список объектов.Т.е.
@RequestMapping(value = "api/getObjectList")
@ResponseBody
public List<ClassA> getObjectList() {
List<ClassA> testList = new ArrayList<>();
testList.add(new ClassA());
testList.add(new ClassB());
testList.add(new ClassC());
return testList;
}
Некоторые из этих объектов расширяют базовый класс, classA:
Класс A:
public class ClassA {
private String propertyA;
public ClassA() {
this.propertyA = "A";
}
//get/set
}
Класс B: открытый класс ClassB расширяет ClassA {
private String propertyB;
public ClassB() {
this.propertyB = "B";
}
//get/set
}
Класс C:
@JsonInclude(Include.NON_NULL)
public class ClassC extends ClassA {
private String propertyC;
public ClassC() {
this.propertyC = "C";
}
//get/set
}
Пока все хорошо, этот код ДОЛЖЕН генерировать следующий json, когда вы тестируете его в локальной среде с помощью метода GET:
http://localhost:port/myApp/api/getObjectList
[
{"propertyA":"A"},
{"propertyA":"A","propertyB":"B"},
{"propertyA":"A","propertyC":"C"}
]
Вы сказали, что вы используете парсер Джексона v2.6 + , поэтому если вы используете парсер Джексона, возможно, это тот случай, когдаВы исключили сериализацию свойств NULL.
В приведенном выше примере я инициализировал все свойства в конструкторе по умолчанию!Однако, если вы удалите инициализированные переменные и попытаетесь вернуть нулевое поле, он не будет возвращать значения NULL для свойства объекта ClassC, потому что преобразователь настроен на игнорирование значений NULL.
Однако я бы хотел, чтобы выВы уже заметили это, и более вероятно, что вы или кто-то другой мог установить global ignore для значений NULL в другом месте.
В случае, если вы не используете егои если кто-то еще «немного поиграл» в том же проекте, возможно, вы захотите принять участие в игнорировании пустых полей