Как собрать данные из вложенного JSONarray, который находится в JSONobject? - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в Android.Я хочу собрать данные из API Ticketmaster и хочу отобразить в ListView.Я использую залп.JSONview api

enter image description here

Как показано на рисунке, я хочу отобразить данные из классификаций и мест.Но при использовании в классе Model он не отображается.

код в JSONObjectRequest

enter image description here

Пожалуйста, просмотрите эти изображения,и помоги мне.Как я могу получить данные из классификаций и мест?

                          // Parsing json
                      for (int i = 0; i < response.length(); i++) {
                        try {

                            JSONObject obj = response.getJSONObject("_embedded");
                            JSONArray array = obj.getJSONArray("events");
                            JSONObject obj2 = array.getJSONObject(i);
                            JSONArray array1 = obj2.getJSONArray("classifications");
                            JSONObject obj3 = array1.getJSONObject(0);
                            JSONObject obj4 = obj3.getJSONObject("segment");
                            Event event = new Event();
                            event.setName(obj2.getString("name"));
                            event.setClassifications(obj4.getString("name")); // here i want to get data from segment

                            // adding movie to movies array
                            eventList.add(event);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

Спасибо !!!

Ответы [ 4 ]

0 голосов
/ 12 июня 2018

Попробуйте один раз ....

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

                    JSONObject obj = response.getJSONObject("_embedded");
                     Iterator iterator = Obj.keys();

                    //while(iterator.hasNext()){
                    String key = (String) iterator.next();
                    JSONObject issue = Obj.getJSONObject(key);
                    JSONArray array = obj.getJSONArray("events");
                    JSONObject obj2 = array.getJSONObject(i);
                    JSONObject obj = response.getJSONObject("_embedded");
                    JSONArray array1 = obj2.getJSONArray("venues");
                    JSONObject obj3 = array1.getJSONObject(0);
                    JSONObject obj4 = obj3.getJSONObject("city");
                    String key1 = (String) iterator.next();
                    JSONObject issue1 = Obj.getJSONObject(key1);
                    Event event = new Event();
                    event.setName(obj2.getString("name"));


                    // adding movie to movies array
                    eventList.add(event);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
0 голосов
/ 12 июня 2018

Вы можете преобразовать данные JSON в класс модели Pojo.Это поможет вам легко получить значения.Вот пример вашей модели Pojo класса

public class ItemOption {
@SerializedName("embeded")
@Expose
private Embeded embeded;public Embeded getEmbeded() {
    return embeded;
}

public void setEmbeded(Embeded embeded) {
    this.embeded = embeded;
}

public class City {

    @SerializedName("name")
    @Expose
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

public class Embeded {

    @SerializedName("events")
    @Expose
    private List<Event> events = null;

    public List<Event> getEvents() {
        return events;
    }

    public void setEvents(List<Event> events) {
        this.events = events;
    }

}

public class Embeded_ {

    @SerializedName("venue")
    @Expose
    private List<Venue> venue = null;

    public List<Venue> getVenue() {
        return venue;
    }

    public void setVenue(List<Venue> venue) {
        this.venue = venue;
    }

}

public class Event {

    @SerializedName("embeded")
    @Expose
    private Embeded_ embeded;

    public Embeded_ getEmbeded() {
        return embeded;
    }

    public void setEmbeded(Embeded_ embeded) {
        this.embeded = embeded;
    }

}


public class Venue {

    @SerializedName("city")
    @Expose
    private City city;

    public City getCity() {
        return city;
    }

    public void setCity(City city) {
        this.city = city;
    }

}}

, а затем

itemOption.getEmbeded().getEvents().get(0).getEmbeded().getVenue().get(0).getCity();
0 голосов
/ 12 июня 2018

Попробуйте этот код, чтобы получить города

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

                        JSONObject obj = response.getJSONObject("_embedded");
                        JSONArray array = obj.getJSONArray("events");
                        JSONObject obj2 = array.getJSONObject(i);
                        JSONObject obj = response.getJSONObject("_embedded");
                        JSONArray array1 = obj2.getJSONArray("venues");
                        JSONObject obj3 = array1.getJSONObject(0);
                        JSONObject obj4 = obj3.getJSONObject("city");
                        Event event = new Event();
                        event.setName(obj2.getString("name"));


                        // adding movie to movies array
                        eventList.add(event);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

Также я рекомендую использовать GSON для анализа JSON

0 голосов
/ 12 июня 2018

Пожалуйста, проверьте это.

JSONObject object = new JSONObject(response.toString());
JSONObject embedded = object.getJSONObject("_embedded");
JSONArray eventsArray = embedded.getJSONArray("events");

for(int i = 0;i<eventsArray.length();i++){
  JSONObject event = eventsArray.getJSONObject(i);
  // Parse data from this event object
}

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

...