0

我有一个 android 应用程序,它从 url 下载 json 数据,解析然后显示它。不幸的是,我将离开互联网一段时间,但想继续在应用程序上工作。

有没有办法可以保存这些数据以供离线使用?

本质上,有没有一种方法可以硬编码 aJSONObject以使用在链接中找到的数据

这样我就可以在本地拥有它?

4

3 回答 3

1

您有以下选择:

  1. 使用RoboSpice

  2. 使用 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();
于 2014-07-16T07:30:48.360 回答
0

如果您的机器中安装了 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);

于 2013-01-06T07:40:41.580 回答
0

将您的 json 存储在资产目录下的文件中的另一种选择。然后,您将能够像访问应用程序中的任何其他文件一样访问它:

http://developer.android.com/reference/android/content/res/AssetManager.html

于 2013-01-07T12:37:45.257 回答