resteasy其实是个很好用的类库,下面介绍下如何使用Resteay去
在JAXB和JSON中进行转换。注意resteasy使用的是Jettison JSON library
(地址:http://jettison.codehaus.org/)
1) pom.xml文件的设置
<repositories>
<repository>
<id>JBoss repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>2.2.0.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jettison-provider</artifactId>
<version>2.2.0.GA</version>
</dependency>
</dependencies>
2)写一个类,使用JAXB
import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "movie") public class Movie { String name; String director; int year; @XmlElement public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public String getDirector() { return director; } public void setDirector(String director) { this.director = director; } @XmlAttribute public int getYear() { return year; } public void setYear(int year) { this.year = year; } }
3) 然后我们就可以把上面的pojo类转变为json了,看下jboss的reseteasy是如何做的,
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import org.jboss.resteasy.annotations.providers.jaxb.json.BadgerFish; @Path("/json/movie") public class JSONService { @BadgerFish @GET @Path("/get") @Produces("application/json") public Movie getMovieInJSON() { Movie movie = new Movie(); movie.setName("Transformers: Dark of the Moon"); movie.setDirector("Michael Bay"); movie.setYear(2011); return movie; } }
4 当访问“/json/movie/gets"时,就显示对应的json了
{ "movie": { "@year":"2011", "director":{ "$":"Michael Bay" }, "name":{ "$":"Transformers: Dark of the Moon" } } }
至于这个@BadgerFish有点怪怪的,有待进一步学习
1 楼
jinnianshilongnian
2012-09-22
天天研究新东西呢
2 楼
witcheryne
2012-09-22
不用注解也能序列化Json
试试Date类型,序列化和反序列化会有意外发生
试试Date类型,序列化和反序列化会有意外发生
3 楼
jackyrong
2012-09-22
jinnianshilongnian 写道
天天研究新东西呢
这个其实是看老外的东西的拉,不是什么新东西了,REST的东西
4 楼
nathanleewei
2012-09-22
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
“使用JAXB“? 这个和jaxb没关系
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
“使用JAXB“? 这个和jaxb没关系
5 楼
syx278250658
2012-09-25
nathanleewei 写道
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
“使用JAXB“? 这个和jaxb没关系
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
“使用JAXB“? 这个和jaxb没关系
rest easy可能自动把json、xml转成对象的,给你的方法直接用,如果你没的jaxb那么就可能报错。
6 楼
weijavamen
2012-10-12
如果 POJO 类 Movie 存在继承关系,又该如何转换呢?