多年来,我一直在努力让托梅1.5.2日航遥感公司与杰克逊合作。我想我已经尝试过100种方法了。
这是我最后一次尝试:
我在conf/system.properties中添加了以下内容:
openejb.cxf.jax-rs.providers = org.codehaus.jackson.jaxrs.JacksonJsonProvider, org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider 我在Tomee的lib文件夹中添加了:
我在一个干净的NetBeans Maven web项目中有一个简单的JAX类。Mirc是一个有名字和汽车的POJO。
...imports
@Path("")
public class MyJson {
@GET
@Produces(APPLICATION_JSON)
public Object myMeth() {
return new Mirc("Peter", "BMW");
}我一直收到“没有找到响应类myclass的消息体编写器”。
我错过了什么?我怎么才能让它起作用?我检查了堆叠溢出上的所有帖子,但都没有成功。
我真的很感谢你的帮助。谢谢。
发布于 2013-10-29 09:02:56
多亏了托梅的大力支持,我终于想出了怎么做的办法。So...here是的!
首先,我将解释如何在最新的Tomee 1.6 JAX-RS版本中实现这一点,它将很快作为稳定版本发布。顺便说一句,现在它还是很稳定的。
假设您有一个Maven Java 6 web应用程序项目(使用NetBeans生成一个),下面是步骤:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</dependency><openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
<pojo-deployment class-name="jaxrs-application">
<properties>
cxf.jaxrs.providers = org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider
</properties>
</pojo-deployment>
</openejb-jar>有关此配置的更多信息,请参见1和2。
如果使用自定义的jaxrs应用程序子类(例如@ApplicationPath ),请从@rmannibucau:中编辑这个类的限定名,而不是"jaxrs- Application“(这意味着默认的应用程序)。
import java.util.Arrays;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/jackson")
public class Resource {
@GET
@Produces({MediaType.APPLICATION_JSON})
public Object sayHelloJson() {
return Arrays.asList(new String[]{"Peter", "pan", "Ihihi"});
}
}http://localhost:8080/yourAppPath/jackson上启动应用程序本指南在NetBeans 7.4上使用1.6.0 2013.10.24版本进行了测试。如果您想要最新的Jackson,请用以下内容替换之前的依赖项:
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.2.3</version>
</dependency>并修改openejb-jar.xml以包含:
cxf.jaxrs.providers = com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider Tomee 1.5.2
对于此版本,必须为每个资源指定提供程序,而不是像1.6.0中那样在应用程序级别指定提供程序。更多信息可以找到这里。
发布于 2013-07-23 18:14:38
您可以使用以下代码:
...imports
@Path("")
public class MyJson {
@GET
@Produces(APPLICATION_JSON)
public String myMeth() {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(new Mirc("Peter", "BMW"));
}这能解决你的问题吗?
可以使用mapper.readValue()将字符串转换为对象。
发布于 2014-03-01 15:41:09
我不得不补充:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>到船舱去。我得到了
java.lang.ClassNotFoundException: org.codehaus.jackson.xc.JaxbAnnotationIntrospector不然的话。
https://stackoverflow.com/questions/17487701
复制相似问题