2013-11-26 75 views
1

每當我運行此代碼,我總是得到這樣的異常時:異常處理JSON

​​

我已經籤其他的答案,但他們沒有爲我工作。

這裏是我的代碼:

import java.util.ArrayList; 
import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import com.example.footballtesting.CustomHttpClient; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
public class MainActivity extends Activity { 

TextView txt_view1; 
TextView txt_view3; 
TextView txt_view2; 
EditText txt_teamID; 
ImageButton btn_save; 
ImageButton btn_show; 
RelativeLayout Relativelayoutrequest; 
boolean haveTeamRequest;;//to store the result of mysql query after decoding with JSON 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txt_view1=(TextView)findViewById(R.id.textView1); 
    txt_view2=(TextView)findViewById(R.id.textView2); 
    txt_view3=(TextView)findViewById(R.id.layout2textView1); 
    txt_teamID=(EditText)findViewById(R.id.txt_teamID); 
    btn_save=(ImageButton)findViewById(R.id.imgbtn_lsave); 
    btn_show=(ImageButton)findViewById(R.id.imgbtn_layout2); 
    Relativelayoutrequest=(RelativeLayout)findViewById(R.id.Relativelayoutrequest); 
    checkOnCreate(); 
} 
public void checkOnCreate() 
{ 
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
    .detectDiskReads().detectDiskWrites().detectNetwork() // StrictMode is most commonly used  to  catch accidental disk or network access on the application's main thread 
    .penaltyLog().build()); 
    Relativelayoutrequest=(RelativeLayout)findViewById(R.id.Relativelayoutrequest); 
    String response=null; 
    String st=null; 
    String str=null; 
    String memberID="000000011"; 
    String returnString=null; 
    int status=1; 
    //To pass to php 
    ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
    postParameters.add(new BasicNameValuePair("userID",memberID)); 

    ArrayList<NameValuePair> pp = new ArrayList<NameValuePair>(); 
    postParameters.add(new BasicNameValuePair("userID","409")); 
    try { 

    response = CustomHttpClient.executeHttpPost(
       "http://10.0.2.2/football365/checkRequestFromTeam.php", 
      postParameters);//local host 
     } 
    catch (Exception e) { 

     e.printStackTrace(); 
    } 
    String result = response.toString(); 
    try{ 
     returnString = ""; 
     JSONArray jArray = new JSONArray(result); 
     for(int i=0;i<jArray.length();i++){ 
       JSONObject json_data = jArray.getJSONObject(i); 
       Log.i("log_tag","requestStatus: "+json_data.getInt("requestStatus") 
       ); 
       //Get an output to the screen 
       status=json_data.getInt("requestStatus"); 
     } 
} 
catch(JSONException e){ 
     Log.e("log_tag", "Error parsing data "+e.toString()); 
} 



    Log.i("str", status+"JJJJJJJJJJJJJJJJ"); 
    Log.i("str", st+"BBBBBBBBBBBBBBBBBB"); 
    Log.i("str", str+"CCCCCCCCCCCCCCCCCCCCCCCCCC"); 


    } 
} 
+2

你檢查在瀏覽器中的反應?它返回一個JSON數組? –

+4

這個json:'{「requestStatus」:「0」}'是一個'JSONObject'而不是'JSONArray'。我猜這是你的問題... –

+0

錯誤是在這一行:JSONArray jArray = new JSONArray(result); – Avijit

回答

0
JSONObject cannot be converted to JSONArray. 

您正在嘗試使用JSONArray一個JSON對象。
嘗試

JSONObject obj = new JSONObject (result); 
+0

謝謝它工作:) – user3032822