Запись JSONArray в файл, запись только первой коллекции значений - PullRequest
0 голосов
/ 17 апреля 2019

Когда исполняется следующий код, функция print печатает все элементы внутри jsonarray, но пишущий - только первый набор элементов.

До сих пор я пробовал то, что показано в коде, плюс, перебирая список

public class FileWrapper {

    public static void WriteRelease(String filename, ArrayList<Object> list) throws IOException, JSONException{

        File file = new File(filename);
        FileWriter filew = new FileWriter(filename);  
        JSONArray jsonarray = new JSONArray();

        //System.out.println(jsonarray.put(list).toString());
        jsonarray.add(list);
        System.out.println(jsonarray);
        jsonarray.writeJSONString(jsonarray,filew);
        filew.close();
    }
}

Вывод, который я хочу записать в файл, совпадает со стандартным выводом:

[[Название - Статус Eminem Is Back - Язык бутлега - eng ReleaseDate - 2004-09-28 Формат - Количество дорожек CD - 11]] [[Название - The Eminem Show Status - Официальный язык - eng ReleaseDate - 2002 Формат - Цифровое количество дорожек мультимедиа - 20]] [[Название - Шоу Eminem Статус - Официальный язык - eng ReleaseDate - 2002 Формат - Цифровое медиа дорожка - 19]]

Опять же, написано только это:

[[Название - Статус Eminem Is Back - Язык бутлега - eng ReleaseDate - 2004-09-28 Формат - Количество дорожек CD - 11]]

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

Попробуйте это

try (PrintWriter pw = new PrintWriter(writer)) {
  pw.println(jsonArray.toString());
}

Я не уверен в написании JSONArray классом

0 голосов
/ 17 апреля 2019

Пожалуйста, проверьте мое решение: App.java класс

// Объект синтаксического анализа JSON для анализа прочитанного файла JSONParser jsonParser = новый JSONParser ();

try {
            URL resource = App.class.getClassLoader().getResource("info.json");
            System.out.println(resource.toString());
            FileReader reader = new FileReader(resource.getFile());

            // Read JSON file
            Object obj = jsonParser.parse(reader);

            JSONArray infoList = (JSONArray) obj;
            System.out.println(infoList);

            Information i = new Information();

            List<Information> info = i.parseInformationObject(infoList);

            saveInformation(info);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }

и повторяем: Информация. Java класс

List<Information> parseInformationObject(JSONArray infoList) {
        List<Information> in = new ArrayList<>();

        infoList.forEach(emp -> {

            JSONObject info = (JSONObject) emp;

            String id = info.get("id").toString();
            String state = info.get("state").toString();
            String type = null;
            if (info.get("type") != null) {
                type = info.get("type").toString();
            }
            String host = null;
            if (info.get("host") != null) {
                host = info.get("host").toString();
            }
            long timestamp = (long) info.get("timestamp");

            in.add(new Information(id, state, type, host, timestamp));

        });
        return in;
    }
0 голосов
/ 17 апреля 2019

Оказывается, обойти было просто, как отмечает @SatyaTNV, единственное, что нужно было изменить, это строка Filewriter

Добавляя

new FileWriter(filename, true)

Все было напечатано отлично! Спасибо, основанный SatyaTNV!

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