我正在尝试使用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,但我不是!感谢任何投入。
答案 0 :(得分:0)
你有jackson-core和jackson-mapper librairies吗?这就是我们需要让JSON序列化工作。