我有一个Android应用程序,从URL下载json数据,解析然后显示它。 不幸的是,我将离开互联网一段时间,但我想继续在应用程序上工作。
有没有办法可以保存这些数据以供离线使用?
基本上,有没有办法我可以对JSONObject
进行硬编码以使用link
这样我会在本地使用它吗?
答案 0 :(得分:1)
您有以下选项:
使用RoboSpice库
使用android排球库
以上两个库都具有缓存功能。有条件地,您可以使缓存无效以检索更新的数据。
使用共享首选项存储JSON字符串,并在需要时更新该字符串。
存储数据:
SharedPreferences settings = getApplicationContext().getSharedPreferences("PREF_NAME", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("strJSON", "" + strJSONfromServer);
editor.commit();
要检索数据:
SharedPreferences settings = getApplicationContext().getSharedPreferences("PREF_NAME", MODE_PRIVATE);
String strData = settings.getString("strJSON", "");
清除数据:
SharedPreferences settings = getApplicationContext().getSharedPreferences("strJSON",MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.remove("strJSON");
editor.commit();
答案 1 :(得分:0)
如果您的计算机上安装了http服务器,则可以将该json数据保存为文本文件,并使用以下网址从设备访问它:“http://10.0.2.2:PORT_NUMBER”
另一种解决方案,不需要http服务器,您可以将数据保存为文本文件并从您的设备访问它,如本答案中所述: Reading a simple text file
编辑: 更简单的方法就是将数据保存在字符串中:
String stringJson = "{\"Baseball\":[{\"Opponent\": ... "
(请注意,您必须使用\“)
转义字符解析json数据,你需要做的就是
JSONObject jsonObject = new JSONObject(stringJson);
答案 2 :(得分:0)
将json存储在assets目录下的文件中的另一个选项。然后,您将能够像应用程序中的任何其他文件一样访问它:
http://developer.android.com/reference/android/content/res/AssetManager.html