Читать JSON из папки / assets в ArrayList в Android?

Во-первых, я много исследовал этот вопрос. Я научился читать из моего текстового файла в папке активов. Проблема в том, что я не хочу заканчиваться строкой, потому что файл на самом деле является массивом, написанным с использованием json, а внутри этого массива - объекты. Мне нужно получить доступ только к одному объекту. Вот что я имею в виду:

У меня есть класс Book, в котором есть int с именем chapter, int с названием title и int с именем pageNum. Я создал несколько объектов Book и добавил их в ArrayList. Затем я использовал следующий код для записи моего ArrayList в текстовый файл (в обычном проекте 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>

Этот код создает текстовый файл, который я затем помещаю в папку / assets в моем проекте Android, потому что я хочу, чтобы он был включен в приложение. В java-проекте, отличном от Android, я мог бы просто использовать следующий код для повторного заполнения ArrayList, чтобы можно было проанализировать объекты Book по определенным индексам:

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

Используемый мной код json взят с сайта quickconnectfamily.org. Вы должны добавить файл с именем qc_json.jar в путь сборки вашего проекта.http://www.quickconnectfamily.org/qcjson/more.html

Проблема в Android заключается в том, что, когда я читаю файл с помощью InputStream, я могу получить только весь файл в строку, приведенный выше код не работает в Android. Я не могу обернуть JSONInputStreams вокруг InputStream, только вокруг FileInputStream. Но, кажется, я не могу использовать FileInputStream.

Так что мне нужен способ создать ArrayList, а не строку в моем приложении для Android. Не отдавая слишком много информации о моем приложении, приложение генерирует случайное число и создает объект Book из этого индекса в ArrayList. Затем пользователя опрашивают с информацией из этой конкретной книги. Звучит глупо, но настоящее приложение намного круче.

Я открыт для решений, альтернативных методов хранения объектов в текстовом файле и т. Д. Просьба не просто публиковать критику по поводу моей грамматики, синтаксиса или идеи приложения. Я довольно новичок в разработке приложений, и мне наплевать на личные мнения. Если кто-то хочет увидеть я могу загрузить больше кода, но на данный момент он не нужен. Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос