Как разобрать ответ ksoap2, возвращенный из веб-службы в разработке Android? - PullRequest
0 голосов
/ 28 марта 2012

После вызова веб-метода в качестве ответа возвращается строка XML.код на стороне Android выглядит так:

SoapPrimitive response = (SoapPrimitive) ws.envelope.getResponse();

, а xml выглядит так:

<string xmlns="http://tempuri.org/">
[{"ID":"leo@gmail.com","float_latitude":22.338,"float_longitude":114.169},          {"ID":"emmy@emmy.com","float_latitude":22.33974,"float_longitude":114.169456},    {"ID":"bob@bob.com","float_latitude":22.3384857,"float_longitude":114.1691},    {"ID":"kay@kay.com","float_latitude":50,"float_longitude":100}]
</string>

Я хочу получить

  1. количество возвращенных идентификаторов
  2. сохранить широту и долготу относительно id для моих локальных переменных

1 Ответ

2 голосов
/ 28 марта 2012

О человек.Прежде всего, ваш ответ - это не XML, а JSON.То, как я анализирую JSON, - это сначала создание универсального объекта.

 public class yourObject{

  private String id; 
  private double lat;
  private double lng; 
 }

Оттуда создайте коллекцию, с которой должен работать массив.

  ArrayList<yourObject> objects = new ArrayList<yourObject>(); 

После этого проведите некоторое исследование JSON, вот небольшой стартовый код.

 JSONArray myAwarry = new JSONArray(response);

передать строку, возвращаемую с сервера, например, ответ.

итерация по массиву

 for(int i = 0; i < myAwarry.length(); i++){
 JSONObject o = myAwarry.get(i); 
 yourObject obj = new yourObject(); 
 obj.setId(o.getString("ID")); 
 obj.setlat(o.getDouble("float_longitude")); 
 obj.setlng(o.getDouble("float_latitude")); 
 //add the obj to the collections of objects
  objects.add(obj); 

}

Надеюсь, это поможет

...