2011-08-18 120 views
0

如果一個請求的響應是一個json響應如何處理它並解碼它。我嘗試了下面的abnd獲取錯誤@ JSONArray json = new JSONArray(r1);Json解析問題android

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 
+0

你可以發佈你得到的錯誤嗎? –

+0

我已經發布了錯誤 – Rajeev

+0

您的示例json文本文件首先顯示一個Array對象..但是您的代碼請求對象而不是數組。請參閱下面的答案 –

回答

0

我這下面的代碼把你的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(); 
} 
+0

是的我確實改變了,但問題出現在這個聲明中,JSONObject json = new JSONObject(r1); – Rajeev

+0

在發送響應時,服務器端是否應存在特定的MIME類型 – Rajeev

+0

否,這是一個錯誤,代碼實際上是在JSONObject中崩潰json = new JSONObject(r1);我糾正了這個問題 – Rajeev