2012-03-30 53 views
0

我想在本地主機上執行對數據庫的查詢並將JSON對象發送給android中的客戶端。我無法知道我的代碼中存在什麼問題。所以有人請在這方面幫助我。Android中的JSON異常

我的php代碼是我發送JSON對象的地方。 PHP代碼

查詢成功執行..

$row=mysql_fetch_array($result1); 


    $email=$row['EM']; 
    $pass=$row['PASS']; 

    $post=array("email"=>$email, "pass"=>$pass); 
    $posts[] = array("post"=>$post); 
    //echo "SUCCESS"; 
    header('Content-type: application/json'); 

    echo json_encode(array("posts"=>$posts)); 

而在機器人側我已經低於該代碼;

HttpResponse response = doPost(url, kvPairs); 
     String responseBody=response.toString(); 
     String temp = EntityUtils.toString(response.getEntity()); 
     if (temp.compareTo("SUCCESS")==0) 
     { 
      Toast.makeText(this, "Working", Toast.LENGTH_LONG).show(); 
     } 

以上部分執行.. 下面的代碼拋出一個異常JSON

 JSONObject json = new JSONObject(responseBody); 
    JSONArray jArray = json.getJSONArray("posts"); 
    no_of_obj=jArray.length(); 
    nemail=new String[no_of_obj]; 
    npass=new String[no_of_obj]; 
    for (int i = 0; i < jArray.length(); i++) { 
     JSONObject e = jArray.getJSONObject(i); 
     String s = e.getString("post"); 
     JSONObject jObject = new JSONObject(s); 
     Toast.makeText(context,jObject.getString("email")+":"+jObject.getString("pass") , duration).show(); 
     nemail[i]=jObject.getString("email"); 
     npass[i]=jObject.getString("pass"); 

    } 

在日誌中的貓,我可以看到:JSON字符串必須以 「{」 ......

+1

能你在日誌中輸出JSON對象,然後在這裏發佈呢?有時候,如果你在開始時有額外的信息(比如PHP警告或其他東西),直到你看到從API返回的實際數據時纔會知道。 – 2012-03-30 04:27:26

+0

從與Java最後一塊相關的異常行#將有所幫助 – 2012-03-30 04:28:57

+0

這意味着您的網址存在一些問題。檢查瀏覽器中的網址,看看你得到了什麼。否則,在你的'doPost(url,kvpair)'方法中存在一些問題 – BBdev 2012-03-30 04:31:01

回答

0

也許你不能做到這一點

String s = e.getString("post"); 

因爲S的陣中沒有「後」鍵trings你給了,...

嘗試這樣做,

String s = e.has("post")?e.getString("post"):null; 

,然後在下一行保持空檢查創建的JSONObject前..

0

試試這個

$posts['data'] = $post; 
//echo "SUCCESS"; 
header('Content-type: application/json'); 
echo json_encode($posts);