我正准备用Jersey创建一个REST-Webservice。 目前我对JSON中字符串或其他值类型的正确表示有点困惑。 这里有两个片段:用Jersey返回字符串的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中调用该方法将显示没有任何JSON素材(大括号等)的纯字符串:
Hello firefox, it is Tue Sep 18 13:52:57 CEST 2012
我想通过dojo工具包使用此服务。问题是,当我设置[handleAs:“json”] - 标志时,我得到了第二个方法。它会引发错误“SyntaxError:意外的标记H”,其中“H”是返回字符串的第一个字母。
所以:什么是正确的JSON表示字符串和其他值类型和什么注释,我必须为我的方法来设置产生这些?
是它最好创建一个DTO每个操作或为每种类型的我想用创建DTO? – Reini
每种类型的DTO – SiMet
“JSON以{”开头 - 不正确。根据http://json.org甚至一个引用的字符串文字是有效的JSON,并且球衣应该支持正确地将字符串序列化为JSON字符串。 – ddumont