节省内存的下载和分析 JSON



我正在寻找一些下载和解析JSON的建议,因为我从用户那里得到崩溃日志,告诉我他们得到了一个内存不足的错误。

我现在使用的是以下代码:

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, Integer.parseInt(connectionTimeOut + "000"));
HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet request = new HttpGet(theUrl);
ResponseHandler<String> handler = new BasicResponseHandler();
result = client.execute(request, handler);
return result;

结果,我通过执行JSONObject json = new JSONObject(result)创建一个 JSON 对象,并从这个 JSONObject 创建我自己的自定义对象。

我将首先检查OOME是由处理大型JSON对象引起的。

如果是这样,也许可以将 JSON 库(如 GSON)与 Retrofit 结合使用,它允许您直接从输入流中读取对象,而不是先将整个输入流读取到字符串中。

如果

这太重(例如,如果 JSON 对象嵌套得很深,缓冲输入流可能会导致设备内存不足),您可以考虑编写自己的 GSON TypeAdapter 来读取输入流的特定区域。

最新更新