我正在創建一個Android應用程序,該應用程序應該將Json從文件或網址解析爲jsonarray和jsonobjects。 問題是,我的JSON是3.3 MB,當我使用一個簡單的代碼,如下所示:(現在不能訪問我的真實代碼,因爲我在工作,從教程中複製了一些代碼;所以它可能會有一些錯誤)Android:解析大型JSON文件
(假設我已經有我的InputStream內容)
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時得到一個內存不足錯誤。 我記錄了一些事情,我發現我的總字符串是17 MB(的3.3 MB的JSON文件?!)當我使用一個小的JSON文件,如twitterfeed左右,代碼工作正常。 當我在記憶中得到這個17 MB的字符串時,我無法解析JSON,因爲那時我的內存不足。
經過大量研究,我發現傑克遜可能是我的解決方案,因爲我明白可以解析輸入流。這應該有所幫助,因爲我的記憶中不需要17 MB的字符串;這不是我認爲的最有效的方式....但我無法清楚地知道這真的會起作用,並沒有讓它自己運行。 有誰知道這是真的會工作,並在哪裏我可以找到一個教程?
我發現"createJsonParser -- public JsonParser createJsonParser(InputStream in)"並認爲這是我的方式去...但我不知道如何在我的代碼中實現這一點,並找不到示例。有誰知道這是如何工作的?
試試看這裏:http://stackoverflow.com/questions/9390368/java-best-approach-to-parse-huge-extra-large-json-file –