我在这个论坛上尝试了很多解决方案来解决这个问题,但没有运气。我正在使用Apache CXF(v.2.5.11),我需要将一些Json发布到REST端点,并将数据解组为Java对象(例如Map)。
当我发布请求时,我收到内部服务器错误
org.apache.cxf.jaxrs.utils.JAXRSUtils readFromMessageBody
WARNING: No message body reader has been found for request class Map, ContentType : application/json.
我尝试了解决方案here但是使用了类com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
和maven artifact jackson-jaxrs-json-provider
(版本2.5.4)。没运气。
我的端点定义如下:
@POST
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response test(Map<String, Object> test) {
...
}
更新
所以我发现如果我回到JacksonJsonProvider的旧代码版本,编组工作正常:
春天背景:
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</jaxrs:providers>
依赖:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.0</version>
</dependency>
所以我猜在fastxml 2.4+版本中发生了一些变化。