2012-11-16 37 views
0

我正在用eclipse寫一個android應用程序。我可以連接到服務器以獲得json響應。不過,我的迴應是這樣的。來自服務器的JSON回覆

\n\n{"product_id":"200003578","category":"Jacket","price":"799","description":"Wool blended, Pea","details":"73% Wool, 27 Nylon"}\n 

無法通過eclipse解析並返回異常。

有誰知道我該如何處理這個響應並將其解析爲數組?

這裏是我的PHP代碼:

include ("db3.inc"); 

$sql = "SELECT * from product WHERE product_id='200003578'"; 
$result = mysql_query($sql); 

$array = mysql_fetch_assoc($result); 
$product_id=$array['product_id']; 


echo json_encode($array); 

這裏是我用於解碼JSON響應代碼。

String product_id = null; 
    String colour_id = null; 
    String colour= null; 
    String picture= null; 
    try{ 
    JSONArray jArray = new JSONArray(z); 
    JSONObject json_data=null; 
    for(int i=0;i<jArray.length();i++){ 
      json_data = jArray.getJSONObject(i); 
      product_id=json_data.getString("product_id"); 
      colour_id=json_data.getString("colour_id"); 
      colour=json_data.getString("colour"); 
      picture=json_data.getString("picture"); 

    } 
    }catch(JSONException e1){ 
     //Toast.makeText(getBaseContext(), "No Food Found", Toast.LENGTH_LONG).show(); 
    } 

    myActivity.text.setText(product_id); 

回答

1

這是一個JSONObjectJSONArray,它應該被解析爲:

JSONObject json_data=new JSONObject(yourstring.trim()); 
product_id=json_data.getString("product_id"); 
colour_id=json_data.getString("colour_id"); 
colour=json_data.getString("colour"); 
picture=json_data.getString("picture"); 

檢查http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

+0

非常感謝!它適用於我的設備! –

+0

如果我不知道由一個對象或兩個對象組成的響應(即一個對象數組),該怎麼辦?我如何處理這種情況? –

+0

我不知道爲什麼json_encode($ array);發出一個對象而不是數組,但是如果你不知道服務器是否會發出一個數組或對象,那麼可以嘗試對它進行解析並採用不會拋出異常的結果。 –

相關問題