Android - 解析单项响应JSONObject

时间:2012-02-05 13:01:17

标签: android json

我在这个枪下(大约需要6个小时才能完成这项工作),我知道我在这里遗漏了一些非常简单的东西。

我正在尝试使用单个数据解析JSON响应,但我的解析代码没有提取它。

以下是整个JSON响应......

{ “ID”: “4480”}

“4480”是潜在的字母数字数据响应,因此它也可能类似于“A427”。

以下是我用来尝试解析单个响应的代码。问题是userID为null - 它没有在JSON响应中获取4480。有人可以指出我搞砸了吗?非常感谢我提供任何帮助!!

InputStream is = null;
                //http post
                try{
                    String postQuery = "my api post goes here";
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(postQuery);
                    HttpResponse response = httpclient.execute(httppost); 
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                }catch(Exception e){
                    Log.e("log_tag", "Error in http connection "+e.toString());
                }

                //convert response to string
                try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;

                    while ((line = reader.readLine()) != null) {
                            sb.append(line + "\n");
                }

                is.close();

                result=sb.toString();
                }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
                }

                //parse json data
                try {
                JSONObject userObject = new JSONObject(result);
                JSONObject jsonid = userObject.getJSONObject("id");
                userID = jsonid.getString("id");
                } 

2 个答案:

答案 0 :(得分:7)

我对JSON解析并不熟悉,但基于this示例,我认为您应该将//parse json data更改为:

//parse json data
try {
    JSONObject userObject = new JSONObject(result);
    userID = userObject.getString("id");
} catch(Exception ex){
    //don't forget this
}

即如果对new JSONObject(result)的调用是正确的。前面提到的例子显示了这样的事情:

JSONObject userObject = (JSONObject) JSONSerializer.toJSON( result );

答案 1 :(得分:0)

试试这段代码:

try{ 
    final JSONObject jsonObject = new JSONObject(result);
    if (jsonObject.length() > 0) 
    {
     String userID  = jsonObject.optString("id");
     Log.e("TAG", "userID:"+ userID);
    }
}catch (Exception e) {
    e.printStackTrace();
}