我制作了一个使用 JAX-RS(RESTfull 服务)的简单项目
我有一个部署到 JBoss AS 6.1 的 JAX-RS(RESTfull 服务)Web 服务项目。与 JSON 集成的 resteasy 由 JBoss 6.1 AS 默认提供。我想更改默认 JSON 资源的日期格式。
我从 Internet 获得了一些帮助,并添加了一个扩展类JacksonJsonProvider
:
@Provider
@Produces("application/json")
public class MyJacksonJsonProvider extends JacksonJsonProvider {
public static final String pattern = "YYYY-MM-dd'T'HH:mm:ss";
@Override
public void writeTo(Object value, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
ObjectMapper mapper = locateMapper(type, mediaType);
// Set customized date format
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
mapper.getSerializationConfig().setDateFormat(sdf);
super.writeTo(value, type, genericType, annotations, mediaType, httpHeaders, entityStream);
}
}
在我在 WebContent/WEB-INF 下添加一个空 beans.xml 以进行 CDI 注入之前,这很有效。
MyJacksonJsonProvider
没有被调用,我仍然得到默认的 JSON 日期格式。
即使在 pom.xml 下添加以下依赖项也无济于事:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cdi</artifactId>
<version>2.2.1.GA</version>
</dependency>
MyJacksonJsonProvider
如果我在“WebContent/WEB-INF”文件夹下有一个空的 beans.xml,有谁知道为什么会被忽略?提前非常感谢!
仅供参考,这是示例模型类:
@XmlRootElement(name = "movie")
public class Movie {
String name;
String director;
int year;
Date date;
@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;
}
@XmlElement
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
这是生成 JSON 资源的类:
@Path("/json/movie")
public class JSONService {
@GET
@Path("/get")
@Produces("application/json")
public Movie getMovieInJSON() {
Movie movie = new Movie();
movie.setName("Little flower");
movie.setDirector("Zhang Zheng");
movie.setYear(1979);
movie.setDate(new Date());
return movie;
}
}