我的一个控制器方法返回类型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)
}