android - 如何使用数组改造解析 JSON 对象

标签 android json retrofit

<分区>

如何使用 android retrofit 获取带有数组的 JSON 对象。我正在使用改造作为 Web API。

我的 JSON 响应如下:-

{
    "PnrNumber": "12345665",
    "Status": "SUCCESS",
    "ResponseCode": "200",
    "TrainNumber": "1111",
    "TrainName": "ABC",
    "JourneyClass": "SL",
    "ChatPrepared": "NO",
    "From": "TEST1",
    "To": "TEST2",
    "JourneyDate": "2019-10-01",
    "Passangers": [
        {
            "Passenger": "Passenger 1",
            "BookingStatus": "CNF/S4/18",
            "CurrentStatus": "CNF/S4/18"
        },
        {
            "Passenger": "Passenger 2",
            "BookingStatus": "CNF/S4/19",
            "CurrentStatus": "CNF/S4/19"
        },
        {
            "Passenger": "Passenger 3",
            "BookingStatus": "CNF/S4/24",
            "CurrentStatus": "CNF/S4/24"
        }
    ]
}

最佳答案

创建您的 POJO来自 json 响应的模型类

Passanger.java

public class Passanger {

@SerializedName("Passenger")
@Expose
private String passenger;
@SerializedName("BookingStatus")
@Expose
private String bookingStatus;
@SerializedName("CurrentStatus")
@Expose
private String currentStatus;

//implement getter,setter

}

TrainData.java

public class TrainData {

@SerializedName("PnrNumber")
@Expose
private String pnrNumber;
@SerializedName("Status")
@Expose
private String status;
@SerializedName("ResponseCode")
@Expose
private String responseCode;
@SerializedName("TrainNumber")
@Expose
private String trainNumber;
@SerializedName("TrainName")
@Expose
private String trainName;
@SerializedName("JourneyClass")
@Expose
private String journeyClass;
@SerializedName("ChatPrepared")
@Expose
private String chatPrepared;
@SerializedName("From")
@Expose
private String from;
@SerializedName("To")
@Expose
private String to;
@SerializedName("JourneyDate")
@Expose
private String journeyDate;
@SerializedName("Passangers")
@Expose
private List<Passanger> passangers = null;

//implement getter, setter

}

改造api接口(interface)

public interface Api {

    @GET("/your_api_endpoint")
    Call<TrainData> retriveTrainData();

}

提出请求

Call<TrainData> call = getRetrofitInstance().create(Api.class).retriveTrainData();
            call.enqueue(new Callback<TrainData>() {
                @Override
                public void onResponse(Call<TrainData> call, Response<TrainData> response) {
                    if(response.isSuccessful()) {
                         response.body().getPassangers();
                        //...
                    }
                }

                @Override
                public void onFailure(Call<TrainData> call, Throwable t) {
                   //..
                }
            });

网上有很多资源,详细可以看下面的文章

vogella

androidhive

android.jlelse

关于android - 如何使用数组改造解析 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58162960/

相关文章:

java - 在 ListAdapter 中使用 ImageView 时出现 OutOfMemoryError?

android - @Order 注解对 XML 序列化顺序没有影响

android - Activity.findViewById() 在 Espresso 测试中返回 null

javascript - 如何解析这样的 Json 列表并在 HTML 中显示其元素?

javascript - 如何从json文件中正确提取信息?

android - 将 AdMob 横幅样式更改为自定义

javascript - 满足条件时如何使用 JSON.parse reviver 替换 JSON

android - 使用 Gson 和 Retrofit 2 反序列化复杂的 API 响应

android - 改造 - 更改 BaseUrl

android - 改造如何在url中使用冒号?