2011-03-23 57 views
1

嘿,夥計們。我在Glassfish 3.1上運行的REST中開發了一些服務。從Restful服務獲取對象列表時出現問題

我有一個Java SE應用程序,我使用Jersey作爲客戶端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列表。謝謝。

回答

1

問題是「擦除」。您可以在程序中聲明List<PkgLine>,但在運行時會清除List中對象爲PkgLines的信息。 List<String>List<PkgLine>List<Object>在運行時都是相同的類型。 (這是有原因的,我不會在這裏解釋,但如果你有興趣,你可以查找「擦除」)。

當然,List中的對象仍然是PkgLines,只是對象,你必須將每一個投射到PkgLine。這並不漂亮。

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

如何解析數組?它有相同的json represantation。 你可以這樣寫:

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