从HttpResponse得到json

Joh*_*han 26 java android 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);
Run Code Online (Sandbox Code Playgroud)

service.php生成一个json字符串.我怎么从我的response?顺便说一句,我已经把GSON图书馆搞定了,我可以在其中使用任何方法吗?

类似于这个的解决方案看起来很丑陋,imo:从httpresponse android处理json的最佳方式

有更好的方法,对吧?

任何帮助表示赞赏,谢谢


更新:

String json = EntityUtils.toString(response.getEntity());
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*keN 20

我认为你遇到的问题类似于我刚遇到的问题.如果您运行:

String json_string = EntityUtils.toString(response.getEntity());
JSONObject temp1 = new JSONObject(json_string);

上面的代码将引发异常,看起来像JSON数组括号是罪魁祸首.但是将JSON数组作为顶级元素是很好的!您只需要使用JSONArray()而不是JSONObject:

String json_string = EntityUtils.toString(response.getEntity());
JSONArray temp1 = new JSONArray(json_string);

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

如果你习惯了iOS/Objective-C JSON解析库,他们使用相同的顶级元素来处理json字典和json数组,所以移动到JAVA/Android世界让我感到困惑的是有两种类型来处理JSON,具体取决于顶级回归.