Чтение файла JSON с java - PullRequest
       0

Чтение файла JSON с java

1 голос
/ 13 января 2020

У меня проблема с чтением поля "Электронная почта" из файла JSON с использованием Java. Когда я пытаюсь прочитать его, он читает только первый, даже если я ставлю больше одного, я пробовал разные вещи, но ничего не похоже на go. Любой способ решить это? Вот код:

Это метод входа, где я записываю все данные о клиенте в файл JSON

JSONObject customer = new JSONObject();
JSONArray list = new JSONArray();   
customer.put("Email", emailCliente.getText());
customer.put("Tipo", "Cliente");
customer.put("Name", nomeCliente.getText());
customer.put("Surname", cognomeCliente.getText());
customer.put("BirthDate", dataNascitaCliente.getText());
customer.put("Address", indirizzoCliente.getText());
customer.put("Phone", telefonoCliente.getText());
customer.put("Password", pswCliente.getText());

list.add(customer);

try {
    FileOutputStream file = new FileOutputStream("Db.json", true);
    ObjectOutputStream fileWriter = new ObjectOutputStream(file);
    fileWriter.writeObject(list);
    fileWriter.flush();
    fileWriter.close(); 
}

Это код для чтения из JSON файл:

public class Read implements Serializable{
public static void main(String[] args) throws IOException {
    try{
        FileInputStream reader = new FileInputStream("Db.json");
        ObjectInputStream ois = new ObjectInputStream(reader);
        Object customer = (Object) ois.readObject();
        JSONArray tmp = (JSONArray) (customer);
        for(Object obj : tmp) {
            JSONObject tmpObj = (JSONObject) obj;
            System.out.println(tmpObj.get("Email"));
        }
        ois.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
} }

1 Ответ

0 голосов
/ 13 января 2020

Вы используете библиотеку org.json для создания и чтения JSON данных.

Не. Эта библиотека ужасно плоха.

Я знаю, json.org перечисляет ее.

Отличный выбор - Джексон или, возможно, Гсон , если хотите альтернатива. Как упомянул в комментарии @ Raúl Garcia, вот хороший урок по баэльдунгу по Джексону .

NB: DataInputStream и DataOutputStream предназначены для механизма сериализации java, который это не JSON, и вы их ни в коем случае не хотите, поэтому выкиньте свой код «read» и начните с нуля, следуя инструкции. Кроме того, ваш код исключения является проблематичным; исключения содержат 4 бита информации (тип, сообщение, трассировка и причина); вы выбрасываете 3 из 4 полезных битов информации, а затем продолжаете вслепую, что, вероятно, приводит к еще большему беспорядку в ваших журналах, что крайне затрудняет попытку выяснить, что происходит не так. Прекратите делать это; просто «бросает» такие исключения и далее. Если вы действительно, действительно не можете, исправьте вашу IDE для генерации catch (Foo e) {throw new RuntimeException(e);} в качестве блока catch по умолчанию НИКОГДА e.printStackTrace();.

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