我正在创建一个 android 应用程序,它应该将 Json 从文件或 url 解析为 jsonarray 和 jsonobjects。问题是我的 json 是 3.3 mb,当我使用简单的代码时,如下所示:(现在无法访问我的真实代码,因为我在工作,从教程中复制了一些代码;所以可能有一些错误)
(假设我已经有我的输入流内容)
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
String twitterfeed = builder.toString();
}
JSONArray jsonArray = new JSONArray(twittefeed);
Log.i(ParseJSON.class.getName(),
"Number of entries " + jsonArray.length());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
当我在我的 android 设备上运行此代码时,将字符串解析为 jsonArray 时出现 OutOfMemory 错误。我记录了一些东西,我发现我的总字符串是 17 mb(一个 3.3 mb 的 json 文件?!)当我使用一个小的 json 文件,比如 twitterfeed 左右时,代码工作正常。当我在我的记忆中得到这个 17 mb 的字符串时,我无法解析 json,因为那时我的内存不足。
经过大量研究后,我发现杰克逊可能是我的解决方案,因为我知道可以解析输入流。这应该会有所帮助,因为我不需要记忆中的 17 mb 字符串;这不是我认为最有效的方式....但我无法弄清楚这真的会起作用,而且我自己也没有让它运行。有谁知道这真的会起作用,我在哪里可以找到教程?
我找到了“createJsonParser -- public JsonParser createJsonParser(InputStream in)”并认为这是我要走的路……但我不知道如何在我的代码中实现它,也找不到示例。有谁知道这是如何工作的?