Android 如何将HttpEntity转换为JSON?
我想从web服务中检索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
我走对了吗
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();
}