2013-11-26 47 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