如何在Java

时间:2019-01-18 02:11:32

标签: java json

我正在尝试做一个函数

从特定目录读取内容,并在目录中创建一个带有该文件标题的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);
    }

2 个答案:

答案 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();