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 回答