1

我试图从服务器获得答案并将其转换为JSONObject. 现在我有这个代码

private JSONObject sendData(ArrayList<NameValuePair> data, String actionname)

{

    // 1) Connect via HTTP. 2) Encode data. 3) Send data.
    try

    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new      
        HttpPost(actionname);
        httppost.setEntity(new UrlEncodedFormEntity(data));
        HttpResponse response = httpclient.execute(httppost);
    //   Log.i("postData", response.getStatusLine().toString());
        InputStream is = response.getEntity().getContent();
        String result = convertStreamToString(is);

     //   JSONArray jArr = new JSONArray (result);
       // int eventID = jArr.getJSONObject(0).getInt("eventID");

        JSONObject jObject = new JSONObject(result);
        return jObject;

    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error:  "+e.toString());
    }

    return null;  

}

result字符串变量中我有这个

{"status":{"code":404,"text":"Not Found"},"content":"用户认证失败"}

但是在代码字符串上JSONObject jObject = new JSONObject(result);- 它转到 return null; =(( 我试图创建JSONArray,但它返回给我一个扩展,我可以JSONARRAYJSONObject.

4

2 回答 2

1

result您可以创建JSONArray如下:

JSONArray finalResult = new JSONArray(new JSONTokener(result));

拥有JSONArray后,您可以循环获取详细信息,如下所示:

for (int i = 0; i < finalResult.length(); i++) {
    JSONObject message = finalResult.getJSONObject(i);
    String content= message.getString("content");
    ...
    ...
}
于 2012-06-12T12:22:11.877 回答
0

我解决了这个问题,但我不明白为什么会这样。可能是我在 OOP 方面不太好。所以我创建 JSONObject jObject 作为 JSONHandler 类的属性,它具有 sendData 方法。它变成了工作。如果有人向我解释为什么会这样,我会很高兴。

于 2012-06-12T13:18:31.177 回答