Перебор json-объектов, полученных с сервера

У меня есть большая группа объектов json, полученных с веб-сервера. Я хочу получить все данные из всех объектов json. Для этого Как мне выполнить итерацию объекта json, чтобы все значения можно было сохранить в массиве..

Это образец модели моего json-объекта, полученного с сервера. Мне нужны все данные (имя и город) в двух массивах. Для этого как мне перебрать объекты json. Невозможно получить данные в виде массива json с сервера. Вот почему я спросил здесь. Если бы это был массив json, мне было бы проще. Так что, пожалуйста, помогите мне..

[{"Name":"abin","City":"aa"},{"Name":"alex","City":"bb"},....... a large collection of json objects...]

person njnjnj    schedule 11.08.2014    source источник
comment
вы уверены, что это json, который у вас есть ?? это в неправильном формате.   -  person Rod_Algonquin    schedule 11.08.2014
comment
да, я уверен.. Почему ты так сказал??   -  person njnjnj    schedule 11.08.2014
comment
нет ключа для получения массива.   -  person Rod_Algonquin    schedule 11.08.2014
comment
Думаю, это коллекция объектов json... Ни одного объекта json...   -  person njnjnj    schedule 11.08.2014
comment
это массив json, а не объект json. и отсутствует ключ для получения массива json.   -  person Rod_Algonquin    schedule 11.08.2014


Ответы (2)


Вы можете использовать Gson и преобразовать строку в объект Java.

Например, у вас есть класс.

public class Location{

    private String name;

    private String city;

    //getters and setters

}

и в вашем классе вы можете просто разобрать его на Location class

Gson gson=new Gson();

Location[] locations=gson.fromJson(jsonString,Location[].class);

после этого вы можете прокручивать локации

for(int i=0;i<locations.length;i++){

     System.out.println(locations[i].getName());

}

если нужно отделить город от названия

ArrayList name=new ArrayList();
ArrayList city=new ArrayList();

for(int i=0;i<locations.length;i++){

   name.add(locations[i].getName());
    city.add(locations[i].getCity());

}
person Ker p pag    schedule 11.08.2014
comment
как импортировать gson в мой проект?? - person njnjnj; 11.08.2014
comment
какую идею вы используете/ - person Ker p pag; 11.08.2014

Если вы знаете структуру своей строки JSON, используйте Gson() Google (добавьте JAR в свой проект) для десериализации, выполнив 3 простых шага:

  1. Создайте класс Entity (каким бы ни был ваш объект, в качестве примера я даю "Person").

    public class Person {
    @Expose //this is a Gson annotation, tells Gson to serialize/deserialize the element
    @SerializedName("name") //this tells Gson the name of the element as it appears in the JSON     string, so it can be properly mapped in Java class
    private String name;
    @Expose
    @SerializedName("lastName")
    private String lastName;
    @Expose
    @SerializedName("streetName")
    private String streetName;
    //getters and setters follow
    }
    
  2. Создайте класс, в который вы десериализуете строку JSON. В моем примере строка JSON на самом деле представляет собой массив Persons.

    public class PersonsList extends ArrayList<Person> implements Serializable{
    //nothing else here
    }
    
    If the JSON string has a named key, then you don't have to extend ArrayList:
    
    public class PersonsList implements Serializable{
    @Expose
    @SerializedName("persons")
    private ArrayList<Person> persons;
    //getters / setters
    }
    
  3. Выполните фактическую десериализацию:

    String json = "[{person1},{person2},{person3}]";//your json here
    Gson gson = new Gson();
    PersonsList personsList = gson.fromJson(json, PersonsList.class);
    //then, depending on how you build PersonsList class, you iterate:
    for(Person p : personsList)//if you extended ArrayList
    //or
    for(Person p : personsList.getPersons())//if it's the second option
    
person nightfixed    schedule 11.08.2014