从 HTTP 响应中获取 JSON 对象

新手上路,请多包涵

我想从 Http 获取响应中获取 JSON 对象:

这是我当前的 Http get 代码:

 protected String doInBackground(String... params) {

    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(params[0]);
    HttpResponse response;
    String result = null;
    try {
        response = client.execute(request);
        HttpEntity entity = response.getEntity();

        if (entity != null) {

            // A Simple JSON Response Read
            InputStream instream = entity.getContent();
            result = convertStreamToString(instream);
            // now you have the string representation of the HTML request
            System.out.println("RESPONSE: " + result);
            instream.close();
            if (response.getStatusLine().getStatusCode() == 200) {
                netState.setLogginDone(true);
            }

        }
        // Headers
        org.apache.http.Header[] headers = response.getAllHeaders();
        for (int i = 0; i < headers.length; i++) {
            System.out.println(headers[i]);
        }
    } catch (ClientProtocolException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return result;
}

这是 convertSteamToString 函数:

 private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

现在我只是得到一个字符串对象。我怎样才能得到一个 JSON 对象。

原文由 Zapnologica 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

您获得的字符串只是 JSON Object.toString()。这意味着您获得了 JSON 对象,但是是 String 格式。

如果你应该得到一个 JSON 对象,你可以输入:

 JSONObject myObject = new JSONObject(result);

原文由 Renan Bandeira 发布,翻译遵循 CC BY-SA 3.0 许可协议

执行此操作以获取 JSON

 String json = EntityUtils.toString(response.getEntity());

此处有更多详细信息: 从 HttpResponse 获取 json

原文由 rockstar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题