我正在尝试做一个函数
从特定目录读取内容,并在目录中创建一个带有该文件标题的json文件。
它很好地读取了文件的标题,但是当我打印出来时,它一次又一次地重叠
我需要相同的键名和不同的值。
有什么办法可以在密钥名称上输入数字或进行相同的密钥输入?
bullet01.png
{"file":"bullet01.png"}
bullet011.png
{"file":"bullet011.png"}
bullet012.png
{"file":"bullet012.png"}
bullet013.png
{"file":"bullet013.png"}
bullet02.png
{"file":"bullet02.png"}
这是完整的代码
public void downloadFile(ViewMeta view) throws IOException {
DataSet input = view.getInputDataSet();
HttpServletRequest request = view.getHttpServletRequest();
String filePath = request.getServletContext().getRealPath("/curriculum1.4/filedir");
DataSet output = new DataSet();
File dir = new File(filePath);
String files[] = dir.list();
JSONObject data= new JSONObject();
for(String fn : files) {
System.out.println(fn);
data.put("file", fn);
System.out.println(data);
}
view.setAttribute("file", data);
view.printJSON();
}
这是一个setAttribute结构
public void setAttribute(String key, Object val) {
if (this.keyList == null) {
this.keyList = new ArrayList();
}
this.keyList.add(key);
this.request.setAttribute(key, val);
this.request.setAttribute("coreframe.object.keyList", this.keyList);
}
答案 0 :(得分:0)
否,JSON中的键应该是唯一的。您可以尝试在密钥“文件”的末尾附加数字
答案 1 :(得分:0)
如果您希望使用相同的键并具有不同的值,则可以将其设置为JSONArray
格式。
[{"file" : "bullet01.png"}, {"file" : "bullet02.png"}, {"file" : "bullet03.png"}]
您的代码可能需要这样更改:
.....
JSONArray array = new JSONArray();
for(String fn : files) {
//create json object for each file
JSONObject data= new JSONObject();
System.out.println(fn);
data.put("file", fn);
System.out.println(data);
//put json object into json array
array.put(data);
}
view.setAttribute("file", array);
view.printJSON();