在android应用程序中将长JSON字符串保存为变量的位置

时间:2017-05-12 21:46:48

标签: android json

我有一个非常长的字符串(或多或少5000行),这是我需要从中获取数据的JSON。在这个json中,当用户使用我的应用程序显示特定信息时,我想要阅读大量数据。

由于JSON数组不太可能发生变化,我认为保持存储并使用.apk服务而不是启动与我的服务器的新HTTP连接会更好,在资源方面。

存储这么大的变量的最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

您可以将数据保存在Text文件中,并将其放在android app的assets文件夹中。当您需要数据时,只需打开文件并阅读即可。

答案 1 :(得分:0)

您可以将JSON数据存储到File中,并在需要时稍后检索。

JSON存储到File

String fileName = "yourFile.json";
String jsonResponse = json.toString(); // here json is JSONObject or JSONArray

// Store
saveJSONData(this, jsonResponse);

public void saveJSONData(Context context, String mJsonResponse) {
    try {
        FileWriter file = new FileWriter(context.getFilesDir().getPath() + "/" + fileName);
        file.write(mJsonResponse);
        file.flush();
        file.close();
    } catch (IOException e) {
        Log.e("TAG", "Error in Writing: " + e.getLocalizedMessage());
    }
}

JSON检索File

String fileName = "yourFile.json";

// Retrieve
String jsonResponse = getJSONData(this);

public String getJSONData(Context context) {
    try {
        File f = new File(context.getFilesDir().getPath() + "/" + fileName);
        //check whether file exists
        FileInputStream is = new FileInputStream(f);
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        return new String(buffer);
    } catch (IOException e) {
        Log.e("TAG", "Error in Reading: " + e.getLocalizedMessage());
        return null;
    }
}

希望这会有所帮助〜