从要使用的类中有效返回JSONObject

时间:2015-01-08 02:48:48

标签: java android json

我正在努力使用另一个类中的JSON对象..我目前有:

public String URL;
public JSONObject ResultArray;

public StackTraceElement[] Error;


public void ExecJSONRequest(){


    JSONObject json = null;
    String str = "";
    HttpResponse response;
    HttpClient myClient = new DefaultHttpClient();
    HttpPost myConnection = new HttpPost(this.URL);

    try {
        response = myClient.execute(myConnection);
        str = EntityUtils.toString(response.getEntity(), "UTF-8");

        // Look for Errors
    } catch (ClientProtocolException e) {
        this.Error = e.getStackTrace();
    } catch (IOException e) {
        this.Error = e.getStackTrace();
    }

    try {
        // Get Results from URL & Populate for return
        JSONArray jArray = new JSONArray(str);
        json = jArray.getJSONObject(0);
        this.ResultArray = json;

        // Look for Errors
    } catch (JSONException e) {
        this.Error = e.getStackTrace();
    }
}

这是我的JSON执行类(基本我知道),

我正在尝试在我的主要活动中使用ResultArray

    TextView url = (TextView) findViewById(R.id.url);
    JSONQuery JSONQ = new JSONQuery();
    JSONQ.URL = "192.168.0.12/Testing/index.php";
    JSONQ.ExecJSONRequest();
    JSONObject Obj = JSONQ.ResultArray;
    url.setText(Obj.getString("url"));

Android Studio正在报告未处理的JSON异常。

使用try / catch块:

 try {
        JSONQuery JSONQ = new JSONQuery();
        JSONQ.URL = "192.168.0.12/Testing/index.php";
        JSONQ.ExecJSONRequest();
        JSONObject Obj = JSONQ.ResultArray;
        url.setText(Obj.getString("url"));
    }catch(Exception E){
        E.printStackTrace();
    }

删除此错误,但我的字段未填充?


更新。使用:

        // Get Results from URL & Populate for return
        JSONArray jArray = new JSONArray(str);
        json = jArray.getJSONObject(0);
        //this.ResultArray = json;
        json.getString("url");
我的JSONQuery类中的

返回预期的结果(当分配给文本字段时)

1 个答案:

答案 0 :(得分:1)

你只需要尝试&抓住这行代码

url.setText(Obj.getString("url"));

因为如果没有“url”键的映射字符串,org.json.JSONObject#getString将抛出JSONException

或者,您可以使用org.json.JSONObject#optString(java.lang.String)代替。如果不存在这样的映射,它不会抛出JSONException并返回空字符串。