我正在尝试使用Jersey创建一个非常简单的REST服务.这是服务代码
@Path("/UserService")
public class UserService {
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public List<User> getUsers() {
User user = new User(1, "Thomas", "Greene");
List<User> userList = new ArrayList<User>();
userList.add(user);
return userList;
}
}
Run Code Online (Sandbox Code Playgroud)
当我通过Postman运行它时,它返回一个XML响应
现在,我希望得到一个JSON响应.所以,我将mediatype更改为application/json:
@Path("/UserService")
public class UserService {
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
public List<User> getUsers(){
User user = new User(1, "Thomas", "Greene");
List<User> userList = new ArrayList<User>();
userList.add(user);
return userList;
}
}
Run Code Online (Sandbox Code Playgroud)
它在Tomcat日志中给出了以下错误:
严重:找不到媒体类型= application/json的typeBodyWriter,type = class java.util.ArrayList,genericType = java.util.List.
有人可以指导我如何获得JSON响应吗?
我正在将Jackson 2与Payara 4一起使用,并且我想在Payara 5中使用Jackson 2。
使用JAX-RS,我还希望避免更改注释等。
在Payara 5中,默认的Jsonb提供程序是Yasson。有禁用它并使用Jackson的想法吗?欢迎所有评论/想法:-)
注意: Yasson非常有趣,但是处理抽象类或接口的序列化/反序列化要比放置Jackson注释复杂得多。我目前的理解是,它需要实现JsonbSerializer / Deserializer,但实际上只能在字段/方法上使用序列化器/反序列化器(对于类开放一个问题,这将非常有帮助)。无论如何,迁移到Yasson意味着将根据需要实现许多序列化器/反序列化器(对于实体以及当然是集合),但是我想这很困难。
我正在使用GlassFish 4上的Java EE 7构建RESTful Web服务.在序列化包含java.util.Date对象的POJO 时,不包括时区信息.
如何自定义对象序列化以便java.util.Date包含时区信息?
例如,而不是这样:
{
"id": 1234,
"foo": "2014-05-19T13:53:49.392"
}
Run Code Online (Sandbox Code Playgroud)
我反而喜欢这样:
{
"id": 1234,
"foo": "2014-05-19T13:53:49.392+09:30"
}
Run Code Online (Sandbox Code Playgroud)
服务器的时区是GMT + 09:30.