我正在尝试将 GET
请求的响应解析为 JSONObject
。它不断抛出异常,我不确定是什么原因造成的。 JSONLint 似乎认为它是有效的 JSON 字符串。这是我使用的:
JSONObject jsonObject = new JSONObject(result);
这是获取字符串响应的代码:
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 菜鸟,我确信我错过了一些非常明显的东西。
最佳答案
哇哇,
当您尝试解析数据时,这似乎是您的错误。
你的结果是一个字符串吗(我认为你从 Response 获得后将 InputStream 转换为字符串)
我看到了你的数据。它是一个数组。
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...
}
关于java - 无法解析成 JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21348971/