2014-12-09 4 views
-1

Я изучаю, как анализировать ответ из спокойной веб-службы. Предполагается, что он должен восстановить строку JSON, чтобы я мог ее проанализировать, я использую Apache libs в android , После некоторых вопросов здесь, в StackOverflow я делаю следующее:Как разобрать конкретный ответ RESTful WS с использованием JSON

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

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

с этим я могу извлечь результат из WS, как это:

"[{\" CodigoRTA \ ": \" 0 \ "\ "MensajeRTA \": \ "\", \ "Respuesta \": \ "[{\\" Codigo \\ "\\" 05 \\", \\ "Номбр \\" \\» ANTIOQUIA \\ "}, {\\" codigo \\ ": \\" 76 \\ ", \\" nombre \\ ": \\" VALLE DEL CAUCA \\ "}] \"}] "

Дело в том, что я пытаюсь разобрать его с помощью 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"); 
      } 

без успеха либо, теперь он говорит, что «он не может преобразовать строку в JSONArray таким образом, любая идея о том, что я могу использовать любую помощь будет действительно оценил.

+1

. Похоже, вы получаете что-то другое как ответ, я имею в виду не действительный JSON, ваш код выглядит хорошо, просто попробуйте зарегистрировать ответ и убедитесь, что он действителен. JSON – Yazan

ответ

0

Ну, похоже, что ответ сервера похож на ответ от Json, все дело в том, что оно содержит. Одна вещь, которую вы можете сделать, - это заменить или удалить 1 из обратного слэша и n попытайтесь присвоить новое значение 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); 

надеюсь, что это вам поможет.

+0

Хорошо, я пробую это с результатом = result. replace ("\", ""); но когда я пытаюсь загрузить JSONArray, он говорит, что он не может его преобразовать ...: S не знаю, что делать .... – jugger

+0

Думаю, вам понадобится регулярное выражение ... но я не должны иметь много знаний в регулярных выражениях, эта ссылка coulb be helpfull http://docs.oracle.com/javase/tutorial/essential/regex/intro.html – Elsanty

Смежные вопросы