Проблема разбор Json на андроид - PullRequest
0 голосов
/ 18 августа 2011

Если ответ на запрос является ответом json, как его обработать и декодировать. Я попытался выполнить следующее и получить ошибку @ JSONArray json = new JSONArray (r1);

HttpPost post = new HttpPost(postURL);
MultipartEntity reqEntity = new MultipartEntity();

HttpResponse response = client.execute(post);  
HttpEntity resEntity = response.getEntity();

String r1 = EntityUtils.toString(resEntity);
System.out.println("printing response now "+r1);
JSONArray json = new JSONArray(r1);


//Toast.makeText(getApplicationContext(), "data received"+r1, Toast.LENGTH_LONG).show();
//  JSONObject json = new JSONObject(r1);
JSONArray venues = json.getJSONObject("data")
          .getJSONArray("url")
          .getJSONObject(0)
          .getJSONArray("url");

Структура Json приведена ниже

 [
 {"data": 
  {"url": 
   {
     "url": "http://www.xxxxxx.com/story.html", "title":"some data","source_url": "www.somesite.com", "summary": "\n \n \n \n \n somedata again"
   }
  }
 }
 ]

Ошибка:

   08-18 16:30:22.907: INFO/System.out(1178): Exceptionorg.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray

1 Ответ

0 голосов
/ 18 августа 2011

У меня следующий код, принимающий ваш json, и он работает для меня ... Может быть, вы должны проверить, в порядке ли ваша оригинальная строка json ... байт на байт может быть ... невидимый символ может помешать синтаксическому анализу

  String r1 = "[{\"data\": {\"url\": { \"url\": \"http://www.xxxxxx.com/story.html\",  \"title\":\"some data\",\"source_url\": \"www.somesite.com\", \"summary\": \"\\n \\n \\n \\n \\n somedata again\"}}}]";
try {
   JSONArray json = new JSONArray(r1);

   Object url = json.getJSONObject(0)
            .getJSONObject("data")
            .getJSONObject("url")
            .get("url");
   Toast.makeText(getApplicationContext(), "url="+url.toString(), Toast.LENGTH_LONG).show();
   Log.i("TESTJSON","All Is Ok");

} catch (Exception e) {
   Log.d("TESTJSON","Something wrong..",e);
   Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...