如何使用JSON解析RESTful WS的特定响应

时间:2014-12-09 19:25:18

标签: android json web-services rest android-studio

我正在学习如何解析来自一个宁静的Web服务的响应它应该检索一个JSON字符串,以便我可以解析它,我在android中使用apache libs。在StackOverflow中的一些问题后,我执行以下操作:

 HttpClient httpClient = new DefaultHttpClient();
        HttpGet request = new HttpGet(URL);

        ResponseHandler<String> handler = new BasicResponseHandler();
        try{
            result = httpClient.execute(request, handler); ...

我可以通过这个方式检索WS的结果:

  

&#34; [{\&#34; CodigoRTA \&#34;:\&#34; 0 \&#34; \&#34; MensajeRTA \&#34;:\&#34; \&#34; \&#34; Respuesta \&#34;:\&#34; [{\\&#34; codigo \\&#34;:\\&#34; 05 \\&# 34;,\\&#34; NOMBRE \\&#34;:\\&#34;安蒂奥基亚\\&#34;},{\\&#34; codigo \\&#34;:\\& #34; 76 \\&#34;,\\&#34; nombre \\&#34;:\\&#34; VALLE DEL CAUCA \\&#34;}] \&#34;}]& #34;

问题是我试图用JSONObject和JSONArray解析它而没有成功;当我尝试使用JSONObject时,错误处理程序说它无法将字符串转换为JSONObject,所以我查找答案或类似问题,并发现如果结果以[]开头,方括号表示JSONArray节点的开始并且卷曲括号{}代表JSONObject,所以我尝试使用这段代码:

            //JSONObject jsonObject = new JSONObject(result);
            JSONArray jArray = new JSONArray(result);

            for(int i=0; i<jArray.length(); i++) {
                JSONObject json_data = jArray.getJSONObject(i);
                codeDepartment[i] = json_data.getInt("codigo");
                NameDepartment[i] = json_data.getString("nombre");
            }

没有成功,它现在说&#34;它不能将String转换为JSONArray。所以我可以使用什么?任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

好吧,似乎服务器响应类似于Json响应,事情就是它包含的所有\。您可以做的一件事是替换或删除1个反斜杠,然后尝试将新值设置为JSONArray。像这样:

            result = httpClient.execute(request, handler);                
            result = result.replace("here the info you want to replace", "here with new values to replace with ");
            JSONArray jArray = new JSONArray(result);

希望对你有所帮助。