Jersey应用程序无法返回简单POJO的JSON表示

时间:2012-03-28 14:18:14

标签: json jersey jackson netty

我正在尝试使用Jersey RS为POJO返回JSON。这是一个servlet,并且没有servlet容器。泽西岛正在Netty内(而不是码头)进行设置。我可以让Jersey返回APPLICATION_XML但在同一资源上的APPLICATION_JSON会抛出一个异常,说找不到我的域类的Message Body Body编写器。我在pom.xml中包含了jersey-json和jackson-jaxrs模块。

以下是ResourceConfig的设置方式:

Map<String, Object> props = new HashMap<String, Object>();
props.put(PackagesResourceConfig.PROPERTY_PACKAGES, RESOURCES_PACKAGE);
props.put(PROPERTY_BASE_URI, "http://localhost:9000/");
props.put(JSONConfiguration.FEATURE_POJO_MAPPING, true);    
ContainerFactory.createContainer(JerseyHandler.class, new PackagesResourceConfig(props));

JerseyHandler是我的Netty Handler类。 资源非常简单:

@Path("/test")
public class TestResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public TestData get() {
           return new TestData();
    }

TestData是最简单的模型类:

@XmlRootElement
public class TestData {
   private String firstName;
   private String lastName;

   public TestData() {}
   public String getFirstName() {
      return firstName;
   }

   public void setFirstName(String firstName) {
       this.firstName = firstName;
   }

   public String getLastName() {
       return lastName;
   } 

   public void setLastName(String lastName) {
       this.lastName = lastName;
   }
}

尝试访问“/ test”时出现异常:

SEVERE: A message body writer for Java class com.xyz.models.TestData, and Java type class com.xyz.models.TestData, and MIME media type application/json was not found

我尝试过包含来自here的Context类但仍然没有运气。

我无法想象从泽西岛返回JSON会是那么难。互联网上的所有例子都假设你从servlet容器中使用Jersey,但我不是!感谢任何投入。

1 个答案:

答案 0 :(得分:0)

你有jackson-core和jackson-mapper librairies吗?这就是我们需要让JSON序列化工作。