Android - Как получить массив JSON в Child - PullRequest
0 голосов
/ 24 сентября 2018

Я новичок в Android Studio, и мне немного сложно анализировать данные json в Android, поэтому я хочу задать вопрос о получении или разборе JSON Child Array.

Это мой код:

public void resSuccess(String requestType, JSONObject response) 
                       { progressBar.setVisibility(View.GONE);
try {
token = response.getString("token");
JSONArray array = response.getJSONArray("all_airport");
for (int i=0; i<array.length(); i++){
    JSONObject jsonObject = array.getJSONObject(i);
    JSONArray jsonArray = jsonObject.getJSONArray("airport");
    for (int j=0; j<jsonArray.length(); j++) {
        JSONObject object = jsonArray.getJSONObject(j);
        BandaraDataSet bds = new BandaraDataSet();
        idDep = object.getString("country_id");
        bds.setId(object.getString("id"));
        bds.setAirport_name(object.getString("airport_name"));
        bds.setAirport_code(object.getString("airport_code"));
        bds.setCountry_name(object.getString("country_name"));
        bds.setCountry_id(object.getString("country_id"));
        bds.setLocation_name(object.getString("location_name"));
        list.add(bds);
    }
}
bandaraAdapter = new BandaraAdapter(ActivityPesawat.this, list);
bandaraAdapter.notifyDataSetChanged();
listBandara.setAdapter(bandaraAdapter);
} catch (Exception e){
      e.printStackTrace();
}
}

И это мой Json

{
    "all_airport":{
        "airport":[
                {
                "airport_name":"Mali",
                "airport_code":"ARD",
                "location_name":"Alor Island",
                "country_id":"id",
                "country_name":"Indonesia"
                },
                {
                "airport_name":"Pattimura",
                "airport_code":"AMQ",
                "location_name":"Ambon",
                "country_id":"id",
                "country_name":"Indonesia"
                },
                {
                "airport_name":"Tanjung Api",
                "airport_code":"VPM",
                "location_name":"Ampana",
                "country_id":"id",
                "country_name":"Indonesia"
                }
            ]
        },
    "token":"ab4f5e12e794ab09d49526bc75cf0a0139d9d849",
    "login":"false"
}

, поэтому моя проблема, когда Parse Json не работает в Android, пожалуйста, помогите кому-нибудь ..

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы обрабатываете JSONObject, как если бы это было JSONArray.Попробуйте этот код:

public void resSuccess(String requestType, JSONObject response) { 
    progressBar.setVisibility(View.GONE);
    try {
        token = response.getString("token");
        JSONObject airports = response.getJSONObject("all_airport");

        JSONArray airportArray = airports.getJSONArray("airport");
        for (int j = 0; j < airportArray.length(); j++) {
            BandaraDataSet bds = new BandaraDataSet();
            JSONObject object = airportArray.getJSONObject(j);
            idDep = object.getString("country_id");
            bds.setId(object.getString("id"));
            bds.setAirport_name(object.getString("airport_name"));
            bds.setAirport_code(object.getString("airport_code"));
            bds.setCountry_name(object.getString("country_name"));
            bds.setCountry_id(object.getString("country_id"));
            bds.setLocation_name(object.getString("location_name"));
            list.add(bds);
        }

        bandaraAdapter = new BandaraAdapter(ActivityPesawat.this, list);
        bandaraAdapter.notifyDataSetChanged();
        listBandara.setAdapter(bandaraAdapter);
    } catch (Exception e){
        e.printStackTrace();
    }
}
0 голосов
/ 24 сентября 2018

Вы должны правильно выполнить синтаксический анализ json, или вы можете использовать Gson (библиотеку) для синтаксического анализа json.Вам просто нужно иметь правильные классы Model (Bean).И тогда анализ будет слишком легким.

compile 'com.google.code.gson: gson: 2.7'

Создать ниже классов Model / Bean

import java.io.Serializable;

//Response.java

public class Response implements Serializable {

    AllAirPort all_airport;

    public AllAirPort getAll_airport() {
        return all_airport;
    }

    public void setAll_airport(AllAirPort all_airport) {
        this.all_airport = all_airport;
    }
}

//AllAirPort.java

public class AllAirPort implements Serializable{

    ArrayList<AirportModel> airport;

    public ArrayList<AirportModel> getAirport() {
        return airport;
    }

    public void setAirport(ArrayList<AirportModel> airport) {
        this.airport = airport;
    }
}

    //AirportModel.java

    public class AirportModel implements Serializable {

        String airport_name;
        String airport_code;


  String location_name;
    String country_id;
    String country_name;

    public String getAirport_name() {
        return airport_name;
    }

    public void setAirport_name(String airport_name) {
        this.airport_name = airport_name;
    }

    public String getAirport_code() {
        return airport_code;
    }

    public void setAirport_code(String airport_code) {
        this.airport_code = airport_code;
    }

    public String getLocation_name() {
        return location_name;
    }

    public void setLocation_name(String location_name) {
        this.location_name = location_name;
    }

    public String getCountry_id() {
        return country_id;
    }

    public void setCountry_id(String country_id) {
        this.country_id = country_id;
    }

    public String getCountry_name() {
        return country_name;
    }

    public void setCountry_name(String country_name) {
        this.country_name = country_name;
    }
}

ОтветresponseObject = new Gson (). fromJson (yourstringResponse, Response.class);

теперь вы можете начать получать данные из responseObject.

...