如何使用 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