Java jackson-jackson解析器不解析json
我已经编写了一个小型web服务,并且正在传递一个JSON。在发送请求时,RESTClient说:状态代码:415不支持的媒体类型,我想我已经将标题内容类型设置为:application/json 我在服务器端收到的错误消息是:Java jackson-jackson解析器不解析json,java,json,jersey,jackson,jax-rs,Java,Json,Jersey,Jackson,Jax Rs,我已经编写了一个小型web服务,并且正在传递一个JSON。在发送请求时,RESTClient说:状态代码:415不支持的媒体类型,我想我已经将标题内容类型设置为:application/json 我在服务器端收到的错误消息是: [ERROR ] A message body reader for Java class com.udm.jsons.JSON_Device, and Java type class com.udm.jsons.JSON_Device, and MIME m
[ERROR ] A message body reader for Java class com.udm.jsons.JSON_Device, and Java type class com.udm.jsons.JSON_Device, and MIME media type application/json; charset=UTF-8 was not found.
The registered message body readers compatible with the MIME media type are:
application/json; charset=UTF-8 ->
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App
com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$App
com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$App
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App
*/* ->
com.sun.jersey.core.impl.provider.entity.FormProvider
com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
com.sun.jersey.core.impl.provider.entity.EntityHolderReader
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy
我在服务器端也使用了正确的格式:
@Path("/initiateProvisioning")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public ResponseInfo initiateProvisioning(JSON_Device device)
我已经为jackson使用jsonschema2pojo.org生成了POJO。请帮助,我一直在等待安静 如果没有发送给REST服务的完整请求,我只能做出假设。检查报头和有效负载是否为UTF-8编码。另外,有效负载必须是类似于{…}的东西。据我所知,您正在从客户端发布JSON有效负载,并试图在您的一个资源方法中以POJO的形式接收它。您需要一个MessageBodyReader来实现这一点。此接口的实现将包含将原始JSON输入流转换为POJO JSON_设备的逻辑。当JAX-RS运行时将要调用您的方法并将返回的对象注入您的方法initiateProvisioning参数时,它将自动调用此函数
JAX-RS javadocs-1添加此Maven依赖项com.sun.jersey:jersey json:${version}2 3报告结果为什么要标记jersey 2?该错误推断您正在使用Jersey 1。我没有使用Maven,很抱歉,我将更改标记。您知道如何使用Maven吗?您有权访问它吗?如果是这样的话,创建新的Maven项目并添加该依赖项,然后查看它引入的所有内容。将它们复制到您的projecti验证了来自jsonlint.com的有效负载,有效负载是正确的,但是如何在UTF-8中对其进行编码,您能解释一下吗