家伙!我正在开发一个Web应用程序,我决定使用Jackson作为我的JSON处理框架。
我愿意发送的请求数据;让我们说POJO看起来像这样:
data class JSONEnvelope(
@JsonProperty("obj1")
val obj1: Obj1,
@JsonProperty("obj2")
val obj2: Obj2)
像这样序列化的:
{
"obj1":{...},
"obj2":{...}
}
但我需要向该对象添加一些元数据,让我们说字段meta1
和meta
。我认为@JsonAppend
可以解决我的问题,但我和杰克逊一起使用Jackson,所以我没有手动序列化对象,所以我不能使用writer.withAttribute("...", ...)
。
我知道this thread,但是没有任何答案可以满足我的需求,因为我认为,编写自定义序列化程序对此有点矫枉过正,而且如果我没有机制来& #34;序列化原始对象的其余部分"。我很高兴有任何想法
答案 0 :(得分:0)
the answer you cited中的解决方案,它将一个mixIn添加到ObjectMapper然后使用ObjectWriter来配置它,这是一个很好的解决方案。
对于调用ObjectMapper.writerFor
并因此阻止您调用withAttribute以配置ObjectWriter的Jersey,一种替代方法是在从writerFor返回之前将属性添加到ObjectWriter 。我建议继承ObjectMapper并重写各种writerFor方法,在那时添加必要的属性。然后,您可以通过将其注册为JAX-RS提供程序来使Jersey使用该ObjectMap:请参阅javax.ws.rs
中的各种注释以开始此操作。 This answer举例说明了该怎么做。