如何从java中的rest服务返回对象?

时间:2017-07-30 19:43:59

标签: javascript json rest api jersey

返回休息服务方法值的最佳方法是什么?一个java对象,json字符串还是带有Response?

例如,这些例子是用api jersey(maven)实现的:

1)返回java对象(映射到json):

@GET
@Path("/getUser")
@Produces({MediaType.APPLICATION_JSON})
public UserVO getUser() {

    UserVO user = new UserVO();
    user.setValid(true);
    user.setName("Peter");

    return user;
}

2)返回一个json字符串:

@GET
@Path("/getUser")
public String getUser() {

    UserVO user = new UserVO();
    user.setValid(true);
    user.setName("Peter");

    Gson gson = new Gson();
    String jsonResp = gson.toJson(user);

    return jsonResp;
}

3)回复json:

@GET
@Path("/getUser")
public Response getUser() {

    UserVO user = new UserVO();
    user.setValid(true);
    user.setName("Peter");

    Gson gson = new Gson();
    String jsonResp = gson.toJson(user);

    return Response.ok(jsonResp, MediaType.APPLICATION_JSON).build();
}

这3个有什么区别?哪个更好用?

(考虑到它将从javascript中消费)

1 个答案:

答案 0 :(得分:0)

所有这三个选项似乎都有效,但第一个选项在我看来更加一致,因为你使用的是API(球衣),这个@produces注释是使用该API的常用方法。

此外,它不会让你依赖另一个lib,GSON,如果它没有在其他地方使用,你最终可以从你的类路径中删除它。