一尘不染

从HttpResponse获取json

json

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(“http://my.server:8080/android/service.php");

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("action", "getjson"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);

service.php生成一个json字符串。我该如何从我的手机上获取response?顺便说一句;
我已经将该GSON库排除在外了,我可以在其中使用任何方法吗?

有更好的方法,对吗?

任何帮助表示赞赏,谢谢


更新:

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

似乎可以解决问题。只有一个小问题:字符串用方括号括起来[]。我应该手动删除它们吗?它们是由php:s生成的json_encode()


阅读 797

收藏
2020-07-27

共1个答案

一尘不染

我认为您遇到的问题与我刚遇到的问题类似。如果您运行:

字符串json_string = EntityUtils.toString(response.getEntity());
JSONObject temp1 =新的JSONObject(json_string);

上面的代码将引发异常,并且似乎应归咎于JSON数组括号。但是,最好将JSON数组作为顶级元素!您只需要使用JSONArray()而不是JSONObject:

字符串json_string = EntityUtils.toString(response.getEntity());
JSONArray temp1 =新的JSONArray(json_string);

因此,您必须知道要获取的是JSONArray还是在JSON代码中为JSONObject的单个字典。

如果您习惯使用iOS / Objective-CJSON解析库,那么它们会使用相同的顶级元素来处理JSON字典和json数组,因此转到JAVA /Android世界会使我感到困惑,因为取决于顶级返回。

2020-07-27