使用自定义序列化程序中的默认序列化序列化对象

时间:2019-07-04 10:09:03

标签: scala spring-boot json-serialization

我的一个控制器方法返回类型Either[A, B]。响应发送到浏览器时会出现问题,如下所示(取决于Either的内容:

{
  "l": {
    "wrappedObjectProp": "asdf"
  }
}

我想发生的事情是收到以下回复:

{
  "wrappedObjectProp": "asdf"
}

那么如何消除这种嵌套呢?首先,我从这里尝试了接受的答案:How to access default jackson serialization in a custom serializer-但是应用程序无法以以下消息开头: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)

}

0 个答案:

没有答案