java – 返回带Jersey的String的JSON表示形式

我即将设置一个带有泽西的REST-Webservice.

目前我对
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();
}

在Browswer中调用该方法将显示纯粹的String,而不需要任何JSON-Stuff(Curly Braces等):

Hello firefox,it is Tue Sep 18 13:52:57 CEST 2012

我想用dojo工具包使用这个服务.问题是,一旦我设置[handleAs:“json”] – 标志,我得到了第二种方法.它给我一个错误“SyntaxError:Unexpected token H”,其中“H”是返回的字符串的第一个字母.

那么:Strings和其他值类型的正确的json表示是什么,以及我为我的方法生成的什么注释?

解决方法

你应该定义一个DTO并把你的String放在那里.所以你将使用一个String作为属性来生成一个HelloResp类.在你的方法中填充该属性并返回.

你可以查看这个Tutorial.另一个tutorial.

Firefox没有显示错误,因为它不处理您的响应.显示服务返回的任何内容.然而,该工具包开始处理响应作为JSON,但没有有效的JSON(JSON以{开头))

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。