无法解析为JSONObject

时间:2014-01-25 09:46:52

标签: java android json

我正在尝试将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,我确信我错过了一些非常明显的东西。

1 个答案:

答案 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...
}