泽西2.x不支持POJO到json?
虽然我试图通过使用jersey.i将java对象转换为json对象,但我有一个例外。
Java代码:-( POJO)
package org.jersey.media.type; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class MyJaxbBean { public String name; public int age; public MyJaxbBean() {} // JAXB needs this public MyJaxbBean(String name, int age) { this.name = name; this.age = age; } }
资源: –
package org.jersey.media.type; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path("/media") public class MediaResources { @GET @Produces("application/xml") public MyJaxbBean getMyBean() { return new MyJaxbBean("Agamemnon", 32); } }
例外:-
Sep 05, 2015 4:20:38 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWr iterInterceptor aroundWriteTo SEVERE: MessageBodyWriter not found for media type=application/json, type=class org.jersey.media.type.MyJaxbBean, genericType=class org.jersey.media.type.MyJaxbBean.
部署描述符: –
JerseyAuthentication Application org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages org.jersey.media.type <!-- jersey.config.server.provider.classnames org.glassfish.jersey.jackson.JacksonFeature,org.glassfish.jersey.jackson.JacksonBinder --> Application /service/* login.html
依赖关系: –
我不是在使用maven,请帮助我解决这个问题
是的,所以Jersey发行版没有任何JSON / POJO支持。 您需要自己找到它们并将它们添加到您的项目中。
如果你想使用JacksonFeature
,那么你需要抓住所有的jar子。 您可以在提供程序类参数中指定所需的任何类,但如果您实际上没有它,则不会发生任何事情。 除了任何例外情况,你都不会被告知。
这些都是你需要的jar子
- 新泽西媒体JSON – jackson2.17
- jersey实体过滤-2.17
- jacksonJAXRS JSON的提供商 – 2.3.2
- jackson核心-2.3.2
- jackson – 数据绑定-2.3.2
- jackson的注解 – 2.3.2
- jackson – JAXRS碱基2.3.2
- jackson模块JAXB的注释 – 2.3.2
请注意,这些都是用于Jersey 2.17的所有jar子。 如果您使用的是较新版本,则应该转到此处 ,然后选择您正在使用的Jersey版本。 你可以下载它。 然后搜索具有相同版本的实体过滤jar。
所有其他jackson的jar子都是相同的版本,但你应该看看jersey-media-json-jackson
使用的jackson版本。 当您单击Jersey版本时,您应该能够向下滚动以查看它使用的Jackson版本。 然后开始搜索该版本的所有上述Jacksonjar子。
例如,如果您选择最新的Jersey 2.21版本的jersey-media-json-jackson
,您可以向下滚动并看到它使用Jackson 2.5.4。 因此,您应该在2.5.4中搜索上述所有Jacksonjar子,而不是如上所示的2.3.2。
Maven用户请注意,您只需要
org.glassfish.jersey.media jersey-media-json-jackson ${jersey2.version}
这种依赖关系将引入您在上面列出的所有jar子。