泽西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子。