Разобрать данные размером около 3 МБ, используя json в ANDROID? - PullRequest
3 голосов
/ 30 мая 2011

Я должен анализировать данные по HTTP-запросу размером около 3 МБ через JSon, но используемый мной синтаксический анализатор не может этого сделать. вот парсер JSon:

public static JSONObject getJSONfromURL(String url){

    InputStream is = null;
    String result = "";
    JSONObject jArray = null;

    //http post
    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    }catch(Exception e){
          //  Log.e("log_tag", "Error in http connection "+e.toString());
    }

    //convert response to string
    try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),102400);

        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
        }
        is.close();
        result=sb.toString();

    }catch(Exception e){
           // Log.e("log_tag", "Error converting result "+e.toString());
    }

    try{

        jArray = new JSONObject(result);            
    }catch(JSONException e){
           // Log.e("log_tag", "Error parsing data "+e.toString());
    }
    return jArray;
}

Любая помощь будет по достоинству оценена. БЛАГОДАРЯ

1 Ответ

3 голосов
/ 30 мая 2011

Вы анализируете целую строку 3 МБ в памяти. Это вызывает исключение нехватки памяти. Разбор больших данных в потоке:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...