java - 使用 Jersey 返回 String 的 JSON 表示

标签 java javascript json dojo jersey

我正准备使用 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/

相关文章:

java - 来自动态 SWT 按钮的 ActionEvent

javascript - 没有 jQuery-UI 的简单 jQuery 可拖动实现 - 如何关闭?

javascript - 如何在 ExtJS Tabpanel 中显示 JSON 表单字段?

java bean表示读取前缀:attrName

java - 无法在 eclipse 中启动 UML 插件

json - 通过 HTTPD 传递 JSON 错误响应

java - 序列化 ArrayList<Objects> 并返回,保留类

php - 数据表警告 : Json Response not working

java - WCF 客户端禁用加密

javascript - Deferred Promise - 在每个函数完成后一个一个地运行函数