【发布时间】:2013-02-18 16:44:43
【问题描述】:
我有这个方法:
@GET
@Path("/myservice")
@Produces(MediaType.APPLICATION_JSON)
public Response mysercice() {
boolean userExists = false;
CacheControl cacheControl = new CacheControl();
cacheControl.setNoCache(true);
cacheControl.setNoStore(true);
JSONObject jsonObject = new JSONObject();
jsonObject.put("userExists", userExists);
return Response.ok(jsonObject, MediaType.APPLICATION_JSON).cacheControl(cacheControl).build();
}
在浏览器中访问方法的url时,得到{},表示对象为空。 所以,我尝试使用:
return Response.ok(jsonObject.toString(), MediaType.APPLICATION_JSON).cacheControl(cacheControl).build();
所以,我进入浏览器 {"userExists" : false} 但我不明白为什么在简单地返回 JSONObject 时,我们会在浏览器中得到一个空对象。
【问题讨论】:
-
因为java对象不存储为字符串所以返回对象和它的字符串表示是完全不同的东西。
-
您的浏览器不知道您的复杂对象是如何序列化的 - Java、.Net、Python .. 您的 HTTP 协议也是如此。但他们确实理解字符串对象。
-
但在代码中,我有一个示例返回一个简单的 java 对象(所有属性都是字符串),在此示例中,该对象在浏览器中不是空的。那么,为什么在 JSONObject 的情况下它是空的呢?