我即将设置一个带有泽西的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以{开头))
