我正准备使用 Jersey 设置 REST-Web 服务。 目前我对 JSON 中字符串或其他值类型的正确表示有点困惑。 这里有两个片段:
@GET
@Path("user")
@Produces( MediaType.APPLICATION_JSON)
public User user() {
return new User("reini", "admin");
}
在浏览器中调用此方法将显示一个“良好”的 JSON 字符串,如下所示:
{"name":"reini","role":"admin"}
我的第二种方法是这样的:
@GET
@Path("hello/{name}")
@Produces( MediaType.APPLICATION_JSON)
public String hello(@PathParam("name") String name) {
return "Hello " + name + ", it is " + new Date();
}
在浏览器中调用该方法将显示没有任何 JSON 内容(花括号等)的纯字符串:
Hello firefox, it is Tue Sep 18 13:52:57 CEST 2012
我想通过 dojo 工具包使用此服务。问题是,我一设置 [handleAs: "json"]-flag 就得到了第二种方法。它抛出一个错误“SyntaxError: Unexpected token H”,其中“H”是返回字符串的第一个字母。
那么:字符串和其他值类型的正确 json 表示形式是什么?我必须为我的方法设置哪些注释才能生成这些?
最佳答案
您应该定义一个 DTO
并将您的 String
放入其中。因此,您将拥有一个包含一个字符串作为属性的 HelloResp
类。在您的方法中填充该属性并返回。
你可以查看这个Tutorial .另一个tutorial .
Firefox 没有显示错误,因为它没有处理您的响应。显示服务返回的任何内容。然而,该工具包开始将响应作为 JSON 处理,但不是有效的 JSON(JSON 以 {
开头)
关于java - 使用 Jersey 返回 String 的 JSON 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476806/