泽西岛:具有 1 个元素的 Json 数组被序列化为对象
我正在使用Jersey / Java创建一个REST服务器,我发现了一个奇怪的行为。
我在服务器上有一个方法,它将对象数组作为Json返回
@GET
@Path("/files")
@Produces(MediaType.APPLICATION_JSON)
public Object getFiles() throws Exception{
DatabaseManager db = new DatabaseManager();
FileInfo[] result = db.getFiles();
return result;
}
代码正确执行,数据返回到客户端(jQuery ajax 调用)。问题是,如果“result”数组具有一个或多个元素,则返回数据的格式会发生变化。
具有一个元素的响应:
{"fileInfo":{"fileName":"weather.arff","id":"10"}}
具有两个元素的响应:
{"fileInfo":[{"fileName":"weather.arff","id":"10"},{"fileName":"supermarket.arff","id":"11"}]}
如您所见,在第一种情况下,返回对象的“fileInfo”属性的值是一个对象,在第二种情况下,该值是一个数组。我做错了什么?第一个案例不应该返回这样的东西吗:
{"fileInfo":[{"fileName":"weather.arff","id":"10"}]}
即一个数组,里面有一个对象?
我知道我可以在客户端检测到这一点,但这似乎是一个非常丑陋的黑客攻击。
感谢您抽出宝贵时间接受采访。