Джерси: массив Json с 1 элементом сериализуется как объект
Я создаю 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;
}
Код выполняется правильно, и данные возвращаются клиенту (ajax-вызов jQuery). Проблема в том, что формат возвращаемых данных изменяется, если "результат" массив имеет один элемент или несколько.
Ответ с одним элементом:
{"fileInfo":{"fileName":"weather.arff","id":"10"}}
Ответ с двумя элементами:
{"fileInfo":[{"fileName":"weather.arff","id":"10"},{"fileName":"supermarket.arff","id":"11"}]}
Как вы можете видеть, в первом сценарии значениеFILEINFO» Свойство возвращаемого объекта является объектом, а во втором случае значением является массив. Что я делаю неправильно? не должен»В первом случае возвращаем что-то вроде этого:
{"fileInfo":[{"fileName":"weather.arff","id":"10"}]}
то есть массив с одним объектом внутри?
Я знаю, что могу обнаружить это на стороне клиента, но это выглядит как очень уродливый хак.
Спасибо за ваше время.