Я создаю сервер REST с помощью Джерси /Java, и я обнаружил странное поведение.
У меня есть метод на сервере, который возвращает массив объектов как 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"}]}
то есть. массив с одним объектом внутри?
Я знаю, что я могу обнаружить это на стороне клиента, но это кажется очень уродливым взломом.
Спасибо за ваше время.