Я застрял с сохранением данных в файле json из текстовых полей. Этот код ниже работает довольно хорошо, но после перезапуска моего приложения и попытки добавить новый obj2, предыдущие данные удаляются. Я пытался использовать append, но затем он сохранялся из [] в json файле. Вторая проблема заключается в том, что мои данные записываются в файл json, я не могу реализовать этот метод в своем коде, не знаю почему. Если у вас есть идея, как ее решить, я был бы признателен.
JSONObject obj1 = new JSONObject();
JSONObject obj2 = new JSONObject();
obj1.put("name", tfNameOfMedicine.getText());
obj1.put("amount",tfAmountOfMedicine.getText());
obj2.put("Medicine", obj1);
if(!checkIfInBase()) {
arr.add(obj2);
try (FileWriter Data = new FileWriter("Data.JSON")) {
Data.write(arr.toJSONString());
Data.flush();
JOptionPane.showMessageDialog(null, "Saved!");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Error");
}
}else{JOptionPane.showMessageDialog(null, "This medicine exist in data base");}
tfAmountOfMedicine.setText("");
tfNameOfMedicine.setText("");
}
Согласно комментарию Алекса Руденко: 1. Я не знаю, перечитал ли я arr, я создаю его так, как показано ниже, в частной декларации.
JSONArray arr = new JSONArray();
2. Это мой метод проверки.
private boolean checkIfInBase() {
JSONObject obj1 = new JSONObject();
JSONObject obj2 = new JSONObject();
int size = arr.size();
obj1.put("name", createMedicine().getName());
obj1.put("amount", createMedicine().getAmount());
obj2.put("Medicine", obj1);
boolean a = false;
for (int i = 0; i < size; i++) {
if (obj1.equals(arr.get(i))) {
a = true;
break;
}
}
return a;
}
3. я использую json .simple