Przeczytaj JSON z folderu / assets do ArrayList w Androidzie?

Po pierwsze, bardzo często badałem to pytanie. Nauczyłem się czytać z mojego pliku tekstowego w folderze zasobów. Problem polega na tym, że nie chcę skończyć z ciągiem znaków, ponieważ plik jest w rzeczywistości arraylistą napisanym za pomocą json, a wewnątrz tego arraylisty są obiekty. Muszę mieć dostęp tylko do jednego obiektu. Oto co mam na myśli:

Mam klasę Book, która ma int zwany rozdział, int o nazwie title i int o nazwie pageNum. Stworzyłem kilka obiektów książki i dodałem je do listy ArrayList. Następnie użyłem następującego kodu, aby zapisać moją tablicę ArrayList do pliku tekstowego (w zwykłym projekcie java):

<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>

Ten kod tworzy plik tekstowy, który następnie umieszczam w folderze / assets w moim projekcie na Androida, ponieważ chcę go dołączyć do aplikacji. W projekcie java bez systemu Android mógłbym po prostu użyć następującego kodu do ponownego wypełnienia tablicy ArrayList, aby móc analizować obce książki z określonych indeksów:

<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>

Kod json, którego używam, pochodzi z quickconnectfamily.org. Musisz dodać plik o nazwie qc_json.jar do ścieżki budowania swojego projektu.http://www.quickconnectfamily.org/qcjson/more.html

Problem w Androidzie polega na tym, że kiedy czytam plik za pomocą InputStream, mogę pobrać cały plik tylko do łańcucha, powyższy kod nie działa w Androidzie. Nie mogę zawinąć JSONInputStreams wokół InputStream, tylko wokół FileInputStream. Ale wydaje się, że nie mogę użyć FileInputStream.

Potrzebuję więc sposobu na utworzenie ArrayList zamiast ciągu w mojej aplikacji na Androida. Bez zbytniego rozdawania mojej aplikacji aplikacja generuje losową liczbę i tworzy obiekt Book z tego indeksu w tablicy ArrayList. Następnie użytkownik zostaje zapytany o informacje z tej konkretnej książki. Brzmi głupio, ale prawdziwa aplikacja jest o wiele fajniejsza.

Jestem otwarty na rozwiązania, alternatywne metody przechowywania obiektów w pliku tekstowym, itp. Nie po prostu krytykuj moją gramatykę, składnię lub pomysł aplikacji. Jestem całkiem nowy w tworzeniu aplikacji i nie przejmuję się osobistymi opiniami. Jeśli ktoś chce zobaczyć więcej kodu, mogę go przesłać, ale w tym momencie nie wydaje się to konieczne. Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion