我正在玩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”]
答案 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;
}