java—我试图在jsonobject中转换对象后将其写入json文件,但没有写入

a2mppw5e  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(274)

以下是我的数据(myrecords中的值):

[Record{Purpose='Medical ', ID='9215524400  ', UpdateTime='2020-10-14', Checkin='2020-10-14'},...]

这是我的密码:

private FileWriter file;
        JSONArray jsonArr = new JSONArray(myRecords);
        for (int i = 0; i < jsonArr.length(); i++) {
            JSONObject jsonObj = jsonArr.getJSONObject(i);
            file = new FileWriter("NewFile.json");
            file.write(String.valueOf(jsonObj));
          }

我没有收到任何错误,但没有任何内容被写入文件。

zwghvu4y

zwghvu4y1#

我认为这一说法没有如预期的那样奏效:

JSONArray jsonArr = new JSONArray(myRecords);

您需要自己定义对象到json的转换。您可以定义 toJSON() 方法 Record 班级:

private static class Record {
    private String purpose, id, updateTime, checkIn;

    public Record(String purpose, String id, String updateTime, String checkIn) {
        this.purpose = purpose;
        this.id = id;
        this.updateTime = updateTime;
        this.checkIn = checkIn;
    }

    public JSONObject toJSON() {
        JSONObject jo = new JSONObject();
        jo.put("purpose", this.purpose);
        jo.put("id", this.id);
        jo.put("updateTime", this.id);
        jo.put("checkIn", this.id);

        return jo;
    }
}

然后你就可以在你的 Record 要调用的数组 toJSON() 对于每个对象:

Record[] myRecords = {
        new Record("Medical", "1", "2020-10-14", "2020-10-14"),
        new Record("Pharma", "2", "2020-10-14", "2020-10-14"),
        new Record("Security", "3", "2020-10-14", "2020-10-14"),
};

JSONArray jsonArr = new JSONArray();
Arrays.stream(myRecords).forEach(r -> jsonArr.put(r.toJSON()));

然后可以继续迭代 JSONArray 然后将每个内容写入文件,如果您不希望文件被覆盖;您需要将append flag设置为true:

for (int i = 0; i < jsonArr.length(); i++) {
    JSONObject jsonObj = jsonArr.getJSONObject(i);
    try (FileWriter file = new FileWriter("NewFile.json", true)) {
        file.write(jsonObj.toString());
    }
}

你也可以写 JSONArray 直接归档如下:

JSONArray jsonArr = new JSONArray();
Arrays.stream(myRecords).forEach(r -> jsonArr.put(r.toJSON()));
try (FileWriter fileWriter = new FileWriter("NewFileCompleteArr.json", true)) {
    fileWriter.write(jsonArr.toString());
}
ldfqzlk8

ldfqzlk82#

你需要关闭filewriter file.close()

相关问题