如何通过 Jackson 传递原始 JSON?
我们有一整套 JAX-RS REST 服务运行在 Apache CXF 和 Jackson 之上。我们使用 JAXB 注释来处理将 POJO 编组到 JSON,效果很好。
但是,我们有一两个地方想要返回原始JSON字符串(我们从Redis缓存中获取)。
Jackson 总是将字符串括在双引号中,并转义其中的所有双引号,例如
@GET @Produces("application/json")
public Response getData() {
String json = ...get from Redis...
return Response.ok(json,"application/json").build()
}
给我们
"{\"test\":1}"
而不是
{"test":1}
我已经尝试了多种方法,将RawSerializer(String.class)添加到对象映射器中,没有任何效果。唯一有效的是,如果我将媒体类型设置为纯字符串,这绕过了Jackson,但并不好,因为我返回了错误的内容类型
即
return Response.ok(json,"text/plain").build()
工作正常,但很差(错误的内容类型,这搞砸了调用我们的.Net WCF应用程序)