我正在尝试将GET
请求的响应解析为JSONObject
。它不断抛出异常,我不确定是什么导致它。 JSONLint似乎认为它是有效的JSON字符串。这是我使用的:
JSONObject jsonObject = new JSONObject(result);
以下是获取String响应的代码:
BufferedReader in = null;
String result = "";
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(params[0]));
HttpResponse response = client.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = in.readLine()) != null){
sb.append(line);
}
result = sb.toString();
}
}catch (IOException ex){
Log.i("Error", ex.getMessage());
} catch (URISyntaxException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
如果我将结果的内容复制到JSONLint,它似乎是有效的。如果我从源URL验证它,它似乎也是有效的。
我在这里不知所措。作为Java和Android noob,我确信我错过了一些非常明显的东西。
答案 0 :(得分:2)
当您尝试解析数据时,这似乎是您的错误。
你的结果是一个字符串(我认为你从Response转换后将InputStream转换为String)
我看到了你的数据。这是一个数组。
httpResponse response = client.execute(httpGet);
String result = convertInputStreamToString(response.getEntity());
JSONArray jsonArray = new JSONArray(result);
for (int i = 0; i < len; i++) {
JSONObject obj = jsonArray.getJSONObject(i);
String name = obj.getString("Name");
//.... LocalityId or something...
}