我有一个运行 1.17 的球衣网络服务,并支持通过 @Produces 注释通过 XML 和 JSON 返回响应。我假设它在返回 JSON 响应时默认使用 JAXB,但我无法确认。截至目前,我现有的客户也使用相同的 JAXB 序列化器/反序列化器。我想创建一个使用 Jackson 而不影响现有客户端的新客户端。
JAXB JSON 响应与 Jackson for Maps 不兼容。使用 JAXB 的地图的 JSON 格式为
"mapName":{"entry":[{"key":"key1","value":"value1"},{"key":"key2","value":"value2"}]}
杰克逊无法解析这一点。有没有办法让杰克逊解析这个 JSON?
另一种尝试:将球衣换成杰克逊
这不是首选选项,但我尝试将“com.sun.jersey.api.json.POJOMappingFeature”设置为 true 以允许它使用 Jackson 进行 JSON 序列化/反序列化,但是服务最终返回 500 秒响应而不记录任何异常. log4j 记录器级别设置为 TRACE。我启用了 ContainerRepsonseFilter 以确认响应中的 500 秒,令我惊讶的是,它记录了成功的 2xx 响应。我的猜测是问题发生在堆栈的某个地方,但我不知道在哪里。