Динамическая JSON-сериализация на основе значения свойства
Я внедряю REST-сервер, используя Spring Boot, JAXB2 и Jackson. Этот сервер поддерживает JSON и XML и основан на официальных спецификациях.
У меня сейчас проблема с сериализацией, специфичная для формата JSON, и я не знаю, как ее можно решить?
Спецификация определяет несколько типов примитивов как строковые, целочисленные и т. Д., Которые могут быть расширены, и в зависимости от этого расширения результат сериализации будет разным.
Классы Java
public class PrimitiveType {
@XmlAttribute
private String id
@XmlElement(name = "extension")
private List<Extension> extensions = new ArrayList<>();
// Getters and Setters
}
public class StringType extends PrimitiveType {
@XmlAttribute
private String value;
// Getter and Setter
}
JSON
// Without id and/or extension(s)
"code" : "abc"
// With id and/or extension(s)
"code ": "abc",
"_code": {
"id": "1",
"extension" : [ {
"url" : "http://mydomain/ext/1",
"valueString" : "abc-1"
}]
}
У меня нет никаких проблем с XML, но это не то же самое для JSON. Я не знаю, как я могу добавить свойство динамически на том же уровне. Я посмотрел на JsonSerializer, но кажется, что он позволяет изменить сериализацию на самом объекте.
У кого-нибудь была возможность делать подобные вещи раньше?