JSON aus dem Ordner / assets in eine ArrayList in Android lesen?

Erstens habe ich diese Frage viel recherchiert. Ich habe gelernt, wie man aus meiner Textdatei im Assets-Ordner liest. Das Problem ist, dass ich nicht mit einem String enden möchte, da die Datei tatsächlich eine Arrayliste ist, die mit json geschrieben wurde und in der sich Objekte befinden. Ich muss nur auf ein Objekt zugreifen. Folgendes meine ich:

Ich habe eine Book-Klasse, die ein int mit dem Namen chapter, ein int mit dem Namen title und ein int mit dem Namen pageNum hat. Ich habe mehrere Book-Objekte erstellt und einer ArrayList hinzugefügt. Dann habe ich den folgenden Code verwendet, um meine ArrayList in eine Textdatei zu schreiben (in einem regulären Java-Projekt):

<code>ArrayList<Book> aList = new ArrayList<Book>();
aList.add(book1);
//etc...add more Book objects here...

File aFile = new File("books.txt");
FileOutputStream aFileStream = new FileOutputStream(aFile);
JSONOutputStream jsonOut = new JSONOutputStream(aFileStream);
jsonOut.writeObject(aList);
jsonOut.close();
</code>

Dieser Code erstellt eine Textdatei, die ich dann in meinem Android-Projekt in den Ordner / assets lege, weil ich möchte, dass sie in die App aufgenommen wird. In einem Java-Projekt, das kein Android-Projekt ist, könnte ich einfach den folgenden Code verwenden, um eine ArrayList neu zu füllen, damit ich Buchobjekte aus bestimmten Indizes analysieren kann:

<code>File bFile = new File("books.txt");
FileInputStream bFileStream = new FileInputStream(bFile);
JSONInputStream jsonIn = new JSONInputStream(bFileStream);
Arraylist<Book> bList = (ArrayList<Book>) jsonIn.readObject();
Book aBook = bList.get(253); //some arbitrary index
</code>

Der von mir verwendete JSON-Code stammt von quickconnectfamily.org. Sie müssen eine Datei mit dem Namen qc_json.jar zum Erstellungspfad Ihres Projekts hinzufügen.http://www.quickconnectfamily.org/qcjson/more.html

Das Problem in Android ist, wenn ich die Datei mit InputStream lese. Ich kann nur die gesamte Datei in eine Zeichenfolge umwandeln. Der obige Code funktioniert in Android nicht. Ich kann JSONInputStreams nicht um einen InputStream wickeln, sondern nur um einen FileInputStream. Es scheint jedoch, dass ich FileInputStream nicht verwenden kann.

Ich brauche also eine Möglichkeit, eine ArrayList anstatt eines Strings in meiner Android-App zu erstellen. Ohne zu viel über meine App preiszugeben, generiert die App im Grunde genommen eine Zufallszahl und erstellt aus diesem Index ein Book-Objekt in der ArrayList. Dann wird der Benutzer mit Informationen aus diesem bestimmten Buch befragt. Klingt albern, aber die echte App ist viel cooler.

Ich bin offen für Lösungen, alternative Methoden zum Speichern von Objekten in einer Textdatei usw. Bitte hinterlassen Sie keine Kritik an meiner Grammatik, Syntax oder Anwendungsidee. Ich bin ziemlich neu in der App-Entwicklung und mir ist die persönliche Meinung sehr wichtig. Wenn jemand mehr Code sehen möchte, kann ich ihn hochladen, aber er scheint an dieser Stelle nicht notwendig zu sein. Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage