2014-02-27 135 views
1

因此,當我嘗試解析JSON對象時,出現該錯誤。我有谷歌的問題,我仍然困惑,無法找到解決辦法。它看起來像我的代碼是正確的。JSONException:解析時無法將類型java.lang.String的值轉換爲JSONObject

這是Android的Java文件

InputStream is = null; 
String result = ""; 
protected String doInBackground(String... params) { 
    try { 

     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(params[0]); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 


     is = entity.getContent(); 
     Log.v("mysql", "Success"); 
    } catch (Exception e) { 
     Log.v("log_tag", "Error in http connection " + e.toString()); 
    } 
    return null; 
} 

protected void onPostExecute(String result) { 
    try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
     } 
     is.close(); 

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

    try{ 
     JSONArray jArray = new JSONArray(result); 
     for(int i=0;i<jArray.length();i++){ 
       JSONObject json_data = jArray.getJSONObject(i); 
       Log.i("log_tag","uID: "+json_data.getInt("uID")+ 
         ", uName: "+json_data.getString("uName")+ 
         ", uPass: "+json_data.getString("uPass") 
       ); 
     } 
}catch(JSONException e){ 
     Log.e("log_tag", "Error parsing data "+e.toString()); 

    } 

} 

的PHP文件中的代碼是這樣

<?php 
$username = "removed"; 
$password = "removed"; 
$database = "removed"; 
$user = "art"; 
mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die ("it's dead jim"); 

$q = mysql_query("SELECT * FROM user WHERE uName = '$user'"); 
while($e=mysql_fetch_assoc($q)){ 
     print(json_encode($e)); 
     $output[]=$e; 
} 

?> 

的JSON值我收到是

{ 「UID」:「1 「,」uName「:」藝術「,」uPass「:」密碼「}

當我嘗試分析它,我得到:

錯誤的數據進行解析org.json.JSONException:值 { 「UID」: 「1」, 「UNAME」: 「藝術」, 「uPass」:」類型的密碼「} org.json.JSONObject 不能轉換爲JSONArray

+0

您對異常消息有什麼不瞭解?你知道JSON格式嗎? –

+0

我瞭解它無法轉換的錯誤,但我不完全明白我在做什麼錯誤以及如何解決它。我知道我將它存儲到一個JSONArray中,但是我還可以存儲它來解析它嗎? – user2574427

+1

當您嘗試將它解析爲JSONArray時,它是JSONObject。 –

回答

2

您文件中的數據是在JSONObject的格式,你tryong接受它,這是造成問題的JSONArray格式。下面這行是罪魁禍首:

JSONArray jArray = new JSONArray(result); 

相反,你需要做的是這樣的:

JSONObject jObject = null; 
jObject = new JSONObject(mJsonString); 
JSONArray jsonImageArray = jObject.getJSONArray("imageTarget"); 

希望它能幫助。

+0

mJsonString與我的結果字符串相等嗎?你也可以解釋一下「imageTarget」。最後,我代碼後,我只是繼續我有for循環? – user2574427

+0

是mJsonString等同於「結果」字符串。對於imagetarget,我附加了我的Json文件。你可以看看它:{ 「imageTarget」: 「圖像1」 ], 「videoUrls」: 「http://mylink.com/video1.mp4」 ], 「videoOrUrl」 :[ 「視頻」 ] } – Sushil

+0

謝謝。只是爲了確保我正確理解這一點......對於你提供的JSON文件,我基本上有jsonImageArray = jObject.getJSONArray(「imageTarget」);其次是jsonImageArray = jObject.getJSONArray(「videoUrls」);等等...? – user2574427

相關問題