Android 如何将HttpEntity转换为JSON?

Android 如何将HttpEntity转换为JSON?,android,json,web-services,Android,Json,Web Services,我想从web服务中检索JSON并解析它。 我走对了吗 HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); HttpResponse response; try { response = httpclient.execute(httpget); HttpEntity entity = response.getEntit

我想从web服务中检索JSON并解析它。
我走对了吗

    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(url);
    HttpResponse response;
    try {
        response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();

        if (entity != null) {
           // parsing JSON
        }

    } catch (Exception e) {
    }
不幸的是,我不知道如何将
HttpEntity
转换为JSONObject

这是我的JSON(摘录):


使用entity.getContent()获取InputStream并将其转换为字符串。

您可以将字符串转换为json,如下所示:

try {
        response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();

        if (entity != null) {
           String retSrc = EntityUtils.toString(entity); 
           // parsing JSON
           JSONObject result = new JSONObject(retSrc); //Convert String to JSON Object

             JSONArray tokenList = result.getJSONArray("names");
             JSONObject oj = tokenList.getJSONObject(0);
             String token = oj.getString("name"); 
        }
}
 catch (Exception e) {
  }
试试这个

public String getMyFeed(){
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(url);
    HttpResponse response = httpclien.execute(httpget);

    HttpEntity entity = response.getEntity();
    HttpInputStream content = entity.getContent();

    StatusLine sl = response.getStatusLine();
    int statCode = sl.getStatusCode()

   if (statCode ==200){

    // process it

}

}


String readFeed  = getMyFeed();
JSONArray jArr = new JSONArray(readFeed);

for(int i=0 ; i<jArr.length ; i++)
JSONObject jObj = jArr.getJSONObject(i);
公共字符串getMyFeed(){
HttpClient HttpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(url);
HttpResponse response=httpclien.execute(httpget);
HttpEntity=response.getEntity();
HttpInputStream内容=entity.getContent();
StatusLine sl=response.getStatusLine();
int statCode=sl.getStatusCode()
如果(statCode==200){
//处理它
}
}
字符串readFeed=getMyFeed();
JSONArray jArr=新的JSONArray(readFeed);

对于(int i=0;i使用gson和EntityUtils:

HttpEntity responseEntity = response.getEntity();

try {
    if (responseEntity != null) {
        String responseString = EntityUtils.toString(responseEntity);
        JsonObject jsonResp = new Gson().fromJson(responseString, JsonObject.class); // String to JSONObject

    if (jsonResp.has("property"))
        System.out.println(jsonResp.get("property").toString().replace("\"", ""))); // toString returns quoted values!

} catch (Exception e) {
    e.printStackTrace();
}

它说
类型不匹配:无法从对象转换为字符串
,因此我将其更改为
字符串标记=(String)result.get(“token”);
。但不幸的是,当我尝试
Log.d(“token”,token)时,没有收到任何结果;
,尽管实体是
!=null,并且我有有效的JSON。好的,然后你可以给我发布你的JSON提要链接bez,你的JSON对象可能包含另一个JsonArray,那么你需要先使用JsonArray,然后从数组中提取值如果它包含数组,然后添加JsonArray tokenList=result.getJSONArray(“结果”);JSONObject oj=tokenList.getJSONObject(0);String token=oj.getString(“token”);EntityUtils来自何处?\对于EntityUtils,请导入org.apache.http.util.EntityUtils;
HttpEntity responseEntity = response.getEntity();

try {
    if (responseEntity != null) {
        String responseString = EntityUtils.toString(responseEntity);
        JsonObject jsonResp = new Gson().fromJson(responseString, JsonObject.class); // String to JSONObject

    if (jsonResp.has("property"))
        System.out.println(jsonResp.get("property").toString().replace("\"", ""))); // toString returns quoted values!

} catch (Exception e) {
    e.printStackTrace();
}