我在这个枪下(大约需要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");
}
答案 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();
}