Один из моих методов контроллеров возвращает тип Either[A, B]
.Проблема возникает, когда ответ отправляется в браузер так, как он выглядит (в зависимости от Either
содержимого:
{
"l": {
"wrappedObjectProp": "asdf"
}
}
. Я хотел бы получить следующий ответ:
{
"wrappedObjectProp": "asdf"
}
Итак, как устранить это вложение? Сначала я попробовал принять ответ отсюда: Как получить доступ к сериализации Джексона по умолчанию в настраиваемом сериализаторе - но приложение не запускается с сообщением:Parameter 0 of constructor in MyCustomSerializer required a bean of type 'com.fasterxml.jackson.databind.JsonSerializer' that could not be found.
Затем я заметил, что параметр serializerProvider
имеет метод defaultSerializeValue
, но это, в свою очередь, дает мне пустой объект json в ответе ... Любой совет?
Кстати, мой текущий код такой:
@JsonComponent
class MyCustomSerializer extends JsonSerializer[Either[A, B]] {
override def serialize(t: Either[A, B], jsonGenerator: JsonGenerator, serializerProvider: SerializerProvider): Unit =
if (t.isLeft) serializerProvider.defaultSerializeValue(t.left.get, jsonGenerator)
else serializerProvider.defaultSerializeValue(t.right.get, jsonGenerator)
}