我有一个 android 应用程序,它从 url 下载 json 数据,解析然后显示它。不幸的是,我将离开互联网一段时间,但想继续在应用程序上工作。
有没有办法可以保存这些数据以供离线使用?
本质上,有没有一种方法可以硬编码 aJSONObject
以使用在链接中找到的数据
这样我就可以在本地拥有它?
您有以下选择:
使用RoboSpice库
使用 android volley 库
以上两个库都具有缓存功能。有条件地,您可以使缓存无效以检索更新的数据。
使用共享首选项来存储 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();
如果您的机器中安装了 http 服务器,您可以将该 json 数据保存为文本文件,并使用 url 从设备访问它:“ http://10.0.2.2:PORT_NUMBER ”
另一种解决方案,不需要http服务器,您可以将数据保存为文本文件并从您的设备访问它,如此答案中所述: Reading a simple text file
编辑:更简单的方法是将数据保存在字符串中:
String stringJson = "{\"Baseball\":[{\"Opponent\": ... "
(请注意,您必须使用 \" 转义字符)
要解析 json 数据,您需要做的就是
JSONObject jsonObject = new JSONObject(stringJson);
将您的 json 存储在资产目录下的文件中的另一种选择。然后,您将能够像访问应用程序中的任何其他文件一样访问它:
http://developer.android.com/reference/android/content/res/AssetManager.html