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



我正在尝试使用Jersey RS为POJO返回JSON。这不是一个servlet,也没有servlet容器。泽西岛是从内蒂(而不是杰蒂)内部设置的。我可以让Jersey返回APPLICATION_XML,但同一资源上的APPLICATION_JSON抛出一个异常,说找不到我的域类的MessageBody编写器。我已经在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

我尝试过从这里包含Context类,但仍然没有成功。

我无法想象从Jersey返回JSON会如此困难。互联网上的所有例子都假设您从servlet容器中使用Jersey,但我不是!感谢您的投入。

您有jackson core和jackson mapper库吗?这就是让JSON序列化工作所需要的。

最新更新