本文介绍了杰克逊-杰克逊解析器不解析json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经编写了一个小型Web服务,并且正在传递JSON.在发送请求时,RESTClient表示:Status Code: 415 Unsupported Media Type,以为我已将标题设置为Content-Type:application/json.

I have written a small web service and I am passing a JSON. On sending the request RESTClient says : Status Code: 415 Unsupported Media Type, thought I have put the header Content-Type: application/json.

我在服务器端收到的错误消息是:

The error message I am receiving on the server side is :

    [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

我在服务器端也使用了正确的格式:

I have used the correct format on the server side alse :

@Path("/initiateProvisioning")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public ResponseInfo initiateProvisioning(JSON_Device device)

我已经生成了供杰克逊使用的POJO,请使用jsonschema2pojo.org.请帮助,我被困在安静中!!!

And I have generated the POJO for jackson use use jsonschema2pojo.org.Please help, I have been stuck for quiet !!!

推荐答案

据我了解,您正在从客户端发布JSON有效负载,并尝试以一种资源方法以POJO的形式接收它.您需要一个MessageBodyReader来实现.此接口的实现将包含将原始(JSON)输入流转换为POJO(JSON_Device)的逻辑.当要调用您的方法并将返回的对象注入到您的方法(initiateProvisioning)参数中时,JAX-RS运行时将自动调用此方法

From what I can understand, you are posting JSON payload from the client and trying to receive it in the form of a POJO in one of your resource methods. You need a MessageBodyReader to achieve this. An implementation of this interface will contain the logic to convert your raw (JSON) input stream to a POJO (JSON_Device). JAX-RS run time will automatically invoke this when it's about to invoke your method and inject the returned object into your method (initiateProvisioning) parameter

JAX-RS javadocs- http://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/MessageBodyReader.html

JAX-RS javadocs - http://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/MessageBodyReader.html

这篇关于杰克逊-杰克逊解析器不解析json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-21 06:03