Java Как записать файл json по частям

У меня есть такая структура в json:

{"documents":{
    "[0]":{
        "parent":"...",
        "metadata":
            {"??":"???"},
        "filename":"12313131",
        "highlight_keywords":
            {"[0]":
                {"repeat":"2",
                 "pattern":"FREGATA", 
                 "operator":"&", 
                 "id_pattern":"12313131lfow"}},
        "language":"it",
        "categories":{"[0]":
                        {"rubric_name":"Террор",
                        "weight_pattern":"4"  }
                    }
                    
                    
    }               
    ,
    "[1]":{"parent":"...","metadata":{"??":"???"},"filename":"12313131","highlight_keywords":"12313131"  }
}}

В этой структуре есть 2 главных элемента, это documents:[0] и documents:[1]. При записи данных я создаю структуру, которая состоит из JSONObject и JSONArray.

Код записи данных в файл:

//Способ 3
//Запись результата обработки в файл .json--------------
//outdir - Выходная директория (для .json)
String outdir = Path[1]; //Path[1] - выходной путь из config.xml
String newName = outdir + File.separator + datFile.replace("dat", "json");
File outPutFile_json = new File(newName);  //Выходной файл .json для сохранения результата обработки
try {
    //Создать root элемент
    JSONObject root = new JSONObject();
    //Cоздать массив для документов
    JSONArray arrayOfDocs = new JSONArray();                        
    //Положить arrayOfDocs в root
    root.put("documents", arrayOfDocs);
    //Заполнять этот массив результатами обработки каждого файла
    for (HashMap.Entry entry : myDocs.entrySet()) {
        //Текущий документ
        CustomDocument curDoc = (CustomDocument) entry.getValue();
        SONObject obj = new JSONObject(); //Стата по текущему документу 
        //Сохранить результат обработки текущего файла в arrayOfDocs
        curDoc.saveDataTojson(curDoc, obj);
        arrayOfDocs.add(obj);
        }
        //String message = root.toString();
        if (!outPutFile_json.exists()) {
            outPutFile_json.createNewFile();
            try (BufferedWriter writerPsp = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outPutFile_json), "UTF-8"))) {
                writerPsp.write(root.toJSONString()); //Записать измененный текст с найденными рубриками в json
                writerPsp.flush(); //Принудительно очищаем буфер BufferedWriter
            } catch (Exception e) {
                e.printStackTrace();
            }                
        } else {
            outPutFile_json.delete();
            if (!outPutFile_json.exists()) {
                outPutFile_json.createNewFile();
                try (BufferedWriter writerPsp = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outPutFile_json), "UTF-8"))) {
                    writerPsp.write(root.toJSONString()); //Записать измененный текст с найденными рубриками в json
                    writerPsp.flush(); //Принудительно очищаем буфер BufferedWriter
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
            }
}

Когда я хочу записать данные в структуру json я не могу заранее знать сколько будет этих главных объектов, поэтому могу записать файл только целиком, когда все что должно быть заполнено в root-documents будет заполнено, и тогда только сделать запись.


Поэтому вопрос, как можно сделать запись в json по частям? Скажем например я получил все данные для элемента documents:[0] записал его в файл, потом получил данные documents:[1] записал его в файл, при этом, чтобы не нарушалась структура конечного файла.


Ответы (0 шт):