gson создать поврежденный json файл - PullRequest
0 голосов
/ 19 апреля 2020

В нижней строке я должен создать большой файл json (14K записей, около 25 полей в каждом). Тем временем я запустил проект с «маленькими» данными, и мне не удалось отформатировать файл json, после быстрого просмотра я обнаружил, что файл поврежден, «вырезан» в файле 964.

, чем я сделал быстрый проверить, используя этот код:

List<HashMap<String, String>> hashList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
    HashMap<String, String> map = new HashMap<>();
    for (int j = 0; j < 10; j++) {
        map.put("a" + j, "a" + j);
    }
    hashList.add(map);
}

Gson gson = new Gson();
FileWriter writer = null;
try {
    writer = new FileWriter("C:\\testDir\\gsonTest.json");
} catch (IOException e) {
    e.printStackTrace();
}
gson.toJson(hashList, writer);

И тогда конец файла json выглядит следующим образом:

"a1":"a1","a2":"a2","a3":"a3","a4":"a4","a5":"a5","a6":"a6","a7":"a7","a8":"a8","a9":"a9","a0":"a0"},{"a1":"a1","a2":"a2","a3":"a3","a4":"a4","a5":"a5","a6":"a6","a7":"a7","a8":"a8","a9":"a9","a0":"a0"},{"a1":"a1","a2":"a2","a3":"a3","a4":"a4","a5":"a5","a6":"a6","a7":"a7","a8":"

Как вы можете видеть файл сломан в "a8":".

Что я должен сделать, чтобы получить полный json файл? Кстати, размер файла составляет 96 КБ, не думаю, что он такой большой ...

1 Ответ

1 голос
/ 19 апреля 2020

Это рабочий фрагмент.

        List<HashMap<String, String>> hashList = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        HashMap<String, String> map = new HashMap<>();
        for (int j = 0; j < 100; j++) {
            map.put("a" + j, "a" + j);
        }
        hashList.add(map);
    }

    Gson gson = new Gson();
    FileWriter writer = null;
    try {
        writer = new FileWriter("C:\\testDir\\gsonTest.json");
        gson.toJson(hashList, writer);

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (writer != null) {
                writer.close();
            } else {
                System.out.println("Buffer has not been initialized!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Вы забыли закрыть файл-писатель и вам нужно поместить gson.to Json (hashList, writer); Внутри попробуй поймать блок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...