从String Android创建Json对象

时间:2012-06-12 11:46:37

标签: java android json web-services

我试图从服务器获得答案并将其转换为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”:“User   身份验证失败“}

但是在代码字符串JSONObject jObject = new JSONObject(result);上 - 它返回null; =((我尝试创建JSONArray但它返回了我可以从JSONARRAY创建JSONObject的扩展名。

2 个答案:

答案 0 :(得分: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");
    ...
    ...
}

答案 1 :(得分:0)

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