有没有一种简单的方法可以使用RestEasy通过JSON传递一组对象?

时间:2012-05-15 00:04:10

标签: java json rest jax-rs resteasy

我正在玩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 \服务器\所有”, “C:\ jboss-4.2.2.GA \服务器\默认”,“C:\ jboss-4.2.2.GA \服务器\最小”, “C:\ jboss-4.2.2.GA \服务器\ PLU”]

1 个答案:

答案 0 :(得分: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;
}