Я пробовал многие решения на этом форуме, чтобы решить эту проблему, но безуспешно. Я использую 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.
Я попробовал решение здесь, но с классом com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
и артефактом maven 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 для codehaus, маршаллинг будет работать нормально:
Контекст Spring:
<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+.