1

現在、RestEasy と Angular.js をいじっています。json のすべての属性を持つオブジェクトのコレクションまたは配列を返そうとしています。しかし、以下のメソッドを実行すると、文字列形式のファイル名の JSON 結果のみが返されます。しかし、File クラスのすべての属性を返す必要があります。RestEasy を使用して JSON でこれを行う簡単な方法はありますか?

@GET
@Produces("application/json")
@Path("/details/{location}")
public File[] getFolderDetails(@PathParam("location") String location) {
    //List<File> folders = new ArrayList<File>();
    File folder = new File(DIRECTORY_LOCATION + "/" + location);
    File[] listOfFiles = folder.listFiles();
    File folders[] = new File[listOfFiles.length];
    int index = 0;
    for (File listOfFile : listOfFiles) {
        folders[index] = listOfFile;
        index++;
    }
    return folders;
}

現在、このメソッドは次のようなものを返します。

["C:\jboss-4.2.2.GA\server\all","C:\jboss-4.2.2.GA\server\default","C:\jboss-4.2.2.GA\server\minimal ","C:\jboss-4.2.2.GA\server\plu"]

4

1 に答える 1

1

RESTEasy は基本的な Java オブジェクトを処理できるので、Map を試してみます。

@GET
@Produces("application/json")
@Path("/details/{location}")
public List<Map<String, Object>> getFolderDetails(@PathParam("location") String location) {
    File folder = new File(DIRECTORY_LOCATION + "/" + location);
    File[] listOfFiles = folder.listFiles();
    List<Map<String, Object>> folders = new ArrayList<Map<String, Object>>();
    for (File file : listOfFiles) {
        Map<String, Object> item = new LinkedHashMap<String, Object>();
        item.put("name", file.getName());
        item.put("size", file.length());
        item.put("lastModified", file.lastModified());
        // etc, adding things that have values from java.lang.* package
        folders.add(folder);
    }
    return folders;
}
于 2012-05-15T00:18:02.117 に答える