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