Возникают проблемы с возвратом списка объектов из службы Restful - PullRequest
1 голос
/ 23 марта 2011

Привет, ребята.Я разработал некоторые службы в REST, которые работают на Glassfish 3.1.

У меня есть приложение Java SE, и я использую Джерси в качестве клиента API.

 public <T> T findAll_JSON(Class<T> responseType) throws UniformInterfaceException {
    WebResource resource = webResource;
    return resource.accept(MediaType.APPLICATION_JSON).get(responseType);
}

Это клиенткод, сгенерированный Netbeans.

Моя главная проблема - передача списка объектов в виде типа ответа

Вот код клиента.

   List<PkgLine> pkgLine = service.findAll_JSON(List.class);        
    System.out.println(pkgLine.get(5).getLineStatus());          
    service.close();

Очевидно, этоне работает, потому что ответ должен быть списком PkgLine.Как мне передать это как универсальный?Мой сервис настроен на возврат списка PkgLine.Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Проблема в «стирании».Вы можете объявить List<PkgLine> в своей программе, но во время выполнения информация о том, что объекты в списке являются PkgLines, стирается.List<String>, List<PkgLine> и List<Object> имеют одинаковый тип во время выполнения.(Есть причина, почему это так; я не буду здесь это объяснять, но вы можете посмотреть «стирание», если вам интересно.)

Объекты в Списке, конечно, все еще PkgLines, ноПеречислите, что они просто Объекты, и вам придется привести каждого из них к PkgLine.Это не красиво.

List<?> pkgLine = service.findAll_JSON(List.class);
System.out.println(((PkgLine)(pkgLine.get(5))).getLineStatus());
service.close();
1 голос
/ 22 мая 2013

А как насчет разбора массива?Он имеет то же представление JSON.Вы могли бы написать что-то вроде этого:

resource.accept(MediaType.APPLICATION_JSON).get(PkgLine[].class);
...