Я использую jackson-databind версии 2.12.3 для сериализации возврата объекта, который должен возвращаться следующим образом:
{
"field1":"value1",
"field2":"value2",
"links":{
"field":{
"href":"/link"
},
"test":{
"href":"/test"
}
}
}
Мои классы таковы:
public class HrefType {
private String href = null;
...
}
public class Link extends HashMap<String, HrefType> {
private HrefType field = null;
...
}
public class MyObject {
private String field1 = null;
private String field2 = null;
private Link links = null;
...
}
Возврат myObject:
MyObject myObject = new MyObject();
myObject.setField1("value1");
myObject.setField2("value2");
Link link = new Link();
link.setField(new HrefType().href("/link"));
link.put("test",new HrefType().href("/test"));
myObject.setLinks(link);
Однако с ObjectMapper по умолчанию link.setField игнорируется, а возвращаемый json:
{
"field1":"value1",
"field2":"value2",
"links":{
"test":{
"href":"/test"
}
}
}
Я попытался провести некоторые тесты с JsonSerializer, но не смог сделать что-то общее для всех классов, которые расширяют HashMap (эти классы генерируются из PSD2 YAML от BerlinGroup, поэтому я бы не хотел менять сгенерированный класс).
Есть ли общий способ сделать это, или мне следует создать класс сериализации для каждого класса, который расширяет HashMap?