Java Rest中的JSON到POJO映射
我不熟悉网络服务。我能够实现正常的get和post,但当我试图用MediaType.APPLICATION_JSON实现post方法时。我有错误。请让我知道这里出了什么问题 我的资源: _---------------------- My Web.xmlJava Rest中的JSON到POJO映射,java,json,web-services,rest,Java,Json,Web Services,Rest,我不熟悉网络服务。我能够实现正常的get和post,但当我试图用MediaType.APPLICATION_JSON实现post方法时。我有错误。请让我知道这里出了什么问题 我的资源: _---------------------- My Web.xml <servlet> <servlet-name>Bakchodi</servlet-name> <servlet-Class> com
<servlet>
<servlet-name>Bakchodi</servlet-name>
<servlet-Class>
com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Bakchodi</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>`
pom.xml中包含的jar asm、jersey{core、服务器、客户端、bundle、json、}和通用日志 请告诉我遗漏了什么 错误:
status:415
server console:SEVERE: A message body reader for Java class com.Pojo, and Java type class com.Pojo, and MIME media type application/json was not found.
The registered message body readers compatible with the MIME media type are:
application/json ->
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$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.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
您的帖子中缺少一些信息,例如URI结构、您正在使用的Servlet规范的版本、调用资源的方式等等 无论如何,您可以检查以下内容:
@POST()
,这对我来说很奇怪,因此您最好删除括号:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_HTML)
public String x2(Pojo p) {
return "HI HI post jason" + p.getName();
}
{ "name": "RAHUL" }
内容类型
设置为应用程序/json
,以便框架知道您正在发送json正文;我认为这甚至是您获得状态:415
)的原因因此,我想这将适用于希望在rest api中使用application/json示例的人……(发送请求时,您可以使用高级rest客户端或postman等应用程序,或者您可以在html页面中创建表单,并通过使用stringify()更改表单提交json对象。我在这篇文章中使用了ajax)可能重复的@Eomm:请告诉我解决方案。因为我可以看到,我的问题没有在那里提到……我有那里所有的配置人员建议的。请告诉我我错过了什么…提前谢谢谢谢你的建议。。。在我的系统重新启动后(我猜,因为它也导致了eclipse的重新启动),如何运行相同的代码(相信我,没有任何更改)…无论如何,再次感谢。
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_HTML)
public String x2(Pojo p) {
return "HI HI post jason" + p.getName();
}
{ "name": "RAHUL" }