Сериализация объекта с использованием сериализации по умолчанию внутри пользовательского сериализатора - PullRequest
0 голосов
/ 04 июля 2019

Один из моих методов контроллеров возвращает тип 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)

}
...