2015-09-29 5 views
1

Существует множество руководств, описывающих, как извлекать объекты JSON из Интернета и сопоставлять их с Core Data.использование сохраненных JSON вместо данных ядра

В настоящее время я работаю над iOS (позднее: Android также), которое загружает объекты json из Интернета и отображает их пользователю. На мой взгляд, все это сопоставление от и до Core Data - это накладные расходы в этом случае, было бы намного проще сохранить объекты JSON напрямую и использовать их как «кеш» в приложении. Существуют ли библиотеки/документированные способы, как получить выборку json-объектов, сохранить их локально и получить их с предопределенным идентификатором?

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

+0

Я знаю, что это не совсем ваш вопрос, но посмотрите на https://realm.io/, это может быть хорошей альтернативой для вас. Действительно прост в использовании и кросс-платформенный. И быстро. – BoilingLime

ответ

0

Есть много способов реализации этого. Вы можете реализовать кеш, используя либо хранилище файлов, либо базу данных в зависимости от сложности, а также количества ваших данных. Если вы используете файлы, вам просто нужно хранить ответ JSON и загружать его всякий раз, когда объект/фрагмент разбит на куски. То, что я делал иногда, это хранить ответ JSON в виде строки в файле, а затем извлекать его при загрузке активности/фрагмента. Вот пример чтения и записи строковых файлов:

Запись файлов:

FileOutputStream outputStream = context.openFileOutput("myfilename",Context.MODE_PRIVATE); 
     String stringToBeSaved = myJSONObject.toString(); 
     outputStream.write(stringToBeSaved.getBytes()); 

Чтение из файлов

FileInputStream inputStream= context.openFileInput("myfilename"); 
     int c; 
     String temp=""; 
     while((c = inputStream.read()) != -1){ 
      temp = temp + Character.toString((char)c); 

Вы можете преобразовать эту строку в JSONObject с помощью:

JSONObject jsonObject = new JSONObject(temp); 

Или вы можете использовать строку в соответствии с вашими потребностями.

Смежные вопросы