Как получить объект внутри объекта из JSON? - PullRequest
0 голосов
/ 16 апреля 2019

Я создаю метод GET, используя Retrofit, и мне нужно получить объект с именем "bus" внутри другого объекта. Я могу назвать его "BusInspectionReport". Какой метод кодирования используется для получения его с использованием идентификатора в качестве запроса?

Что я хочу, так это получать только содержимое объекта bus из json. Я создал класс с именем BusInspectionReport, и одним из его параметров является объект 'bus' класса Bus. Класс Bus - это то, что будет представлять содержимое объекта bus в файле json.

Пример файла json с id = 1:

{
    "response_code":5,
    "response_msg":"Success",
    "bus":{
        "vehicle_id":"1",
        "vehicle_plate":"ا ا ا 4389",
        "category":"ورشة",
        "category_id":2,
        "last_seen":"2019-04-15T12:19:24.4223277",
        "location":{
            "lat":0.0,
            "lon":0.0
        },
        "status":{
            "sos":false,
            "ignition":"",
            "movement":false,
            "speed":0.0
        },
            "driver":{
                "driver_id":0,
                "driver_name":""
            },
            "inspection_report":[]
        }
}

BusInspectionReport.java:

public class BusInspectionReport {

    private int response_code;
    private String response_msg;
    private Bus bus;

    public BusInspectionReport(int response_code, String response_msg, Bus bus) {
        this.response_code = response_code;
        this.response_msg = response_msg;
        this.bus = bus;
    }

    public int getResponse_code() {
        return response_code;
    }

    public void setResponse_code(int response_code) {
        this.response_code = response_code;
    }

    public String getResponse_msg() {
        return response_msg;
    }

    public void setResponse_msg(String response_msg) {
        this.response_msg = response_msg;
    }

    public Bus getBus() {
        return bus;
    }

    public void setBus(Bus bus) {
        this.bus = bus;
    }
}

Bus.java:

public class Bus {

    private String vehicle_id;
    private String vehicle_plate;
    private String category;
    private String category_id;
    private String last_seen;
    private Status status;
    private Driver driver;

    public Bus(String vehicle_id, String vehicle_plate, String category, String category_id, String last_seen, Status status, Driver driver) {
        this.vehicle_id = vehicle_id;
        this.vehicle_plate = vehicle_plate;
        this.category = category;
        this.category_id = category_id;
        this.last_seen = last_seen;
        this.status = status;
        this.driver = driver;
    }

    public String getVehicle_id() {
        return vehicle_id;
    }

    public void setVehicle_id(String vehicle_id) {
        this.vehicle_id = vehicle_id;
    }

    public String getVehicle_plate() {
        return vehicle_plate;
    }

    public void setVehicle_plate(String vehicle_plate) {
        this.vehicle_plate = vehicle_plate;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getCategory_id() {
        return category_id;
    }

    public void setCategory_id(String category_id) {
        this.category_id = category_id;
    }

    public String getLast_seen() {
        return last_seen;
    }

    public void setLast_seen(String last_seen) {
        this.last_seen = last_seen;
    }

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public Driver getDriver() {
        return driver;
    }

    public void setDriver(Driver driver) {
        this.driver = driver;
    }
}

MyApi.java:

public interface MyApi {

    String BASE_URL = "/*BASE URL*/";

    @GET("/*API PATH*/")
    Call<Bus> getBus(@Query("id") String vehicle_id);

}

Я не уверен в методе GET, если он правильный или нет, должен ли я сначала получить объект BusInspectionReport, чтобы получить объект 'bus'? или я могу получить «автобус» напрямую?

1 Ответ

0 голосов
/ 16 апреля 2019

Измените Call<Bus> на Call<BusInspectionReport>, а затем получите Bus от объекта BusInspectionReport

public interface MyApi {
    String BASE_URL = "/*BASE URL*/";
    @GET("/*API PATH*/")
    Call<BusInspectionReport> getBus(@Query("id") String vehicle_id);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...