Я сканировал переполнение стека весь день и не нашел жизнеспособного решения для моей проблемы.
У меня есть pojo, у которого есть примитивные типы и вложенные объекты.Например ...
@JsonIgnoreProperties({"duration", "errorCode", "haveFieldsChanged",
"serviceRequestToken", "storedProcDuration"}) // Abstract Base Class
properties
class Bus extends AbstractBaseClass implements Serializable{
@JsonIgnore
private static final long serialVersionId = 1;
@JsonProperty("name")
String name;
@JsonProperty("id")
int id;
@JsonProperty("students")
List<Student> students; // Nested Objects
@JsonProperty("employer")
Employer employer; //Nested object
// Getters and setters - none are annotated
@JsonRootName(value = "student")
class Student implements Serializable{
// student fields
}
@JsonRootName(value = "statusType")
class Employer implements Serializable{
@JsonProperty("id")
int id;
}
Когда я сериализую свой объект Bus, у Джексона не будет проблем с созданием правильной структуры для имени, идентификатора и моего списка студентов.Тем не менее, он будет пропускать работодателя полностью, оставляя его отсутствующим в JSON.Увидеть ниже.
{
"name":"Sean",
"id": 1,
"students":[student objects...]
}
Я пробовал @JsonProperty, @JsonSerialize (as = Employer.class), я пытался построить карту для объекта работодателя.Я чувствую, что исчерпал большинство вариантов.Есть что-то, чего мне не хватает?
Я столкнулся с исключениями переполнения стека, пробуя другие аннотации.Я ценю любую помощь, которую я могу получить.
Причина, по которой я добавил @JsonProperty к полям, заключается в том, чтобы помочь осуществить десериализацию.Я думаю, что это может быть основной причиной сериализации, но я не уверен.
Реализация сериализации
private String serializeBus(Bus bus) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
String json = null;
try {
json = mapper.writeValueAsString(bus);
} catch (JsonProcessingException e) {
logger.error("Error serializing bus");
throw new Exception(e);
}
return json;
}
Спасибо!