【问题标题】:How can I parse object inside array using retrofit如何使用改造解析数组内的对象
【发布时间】:2020-11-16 00:19:49
【问题描述】:
[
{
"login": "mojombo",
"id": 1,
"node_id": "MDQ6VXNlcjE=",
"avatar_url": "https://avatars0.githubusercontent.com/u/1?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mojombo",
"html_url": "https://github.com/mojombo",
"followers_url": "https://api.github.com/users/mojombo/followers",
"following_url": "https://api.github.com/users/mojombo/following{/other_user}",
"gists_url": "https://api.github.com/users/mojombo/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mojombo/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mojombo/subscriptions",
"organizations_url": "https://api.github.com/users/mojombo/orgs",
"repos_url": "https://api.github.com/users/mojombo/repos",
"events_url": "https://api.github.com/users/mojombo/events{/privacy}",
"received_events_url": "https://api.github.com/users/mojombo/received_events",
"type": "User",
"site_admin": false
}
]

Json:https://api.github.com/users

这是一个 API 的 URL...我如何解析这个对象以使用改造来获取数据?

【问题讨论】:

    标签: java android api retrofit


    【解决方案1】:

    这里是关于如何使用改造来获取带有数组的 JSON 对象的示例。我相信您在更改它以处理您的数据时不会遇到麻烦。

    Example.java

    public class Example {
    
    @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;
    
    public String getPnrNumber() {
    return pnrNumber;
    }
    
    public void setPnrNumber(String pnrNumber) {
    this.pnrNumber = pnrNumber;
    }
    
    public String getStatus() {
    return status;
    }
    
    public void setStatus(String status) {
    this.status = status;
    }
    
    public String getResponseCode() {
    return responseCode;
    }
    
    public void setResponseCode(String responseCode) {
    this.responseCode = responseCode;
    }
    
    public String getTrainNumber() {
    return trainNumber;
    }
    
    public void setTrainNumber(String trainNumber) {
    this.trainNumber = trainNumber;
    }
    
    public String getTrainName() {
    return trainName;
    }
    
    public void setTrainName(String trainName) {
    this.trainName = trainName;
    }
    
    public String getJourneyClass() {
    return journeyClass;
    }
    
    public void setJourneyClass(String journeyClass) {
    this.journeyClass = journeyClass;
    }
    
    public String getChatPrepared() {
    return chatPrepared;
    }
    
    public void setChatPrepared(String chatPrepared) {
    this.chatPrepared = chatPrepared;
    }
    
    public String getFrom() {
    return from;
    }
    
    public void setFrom(String from) {
    this.from = from;
    }
    
    public String getTo() {
    return to;
    }
    
    public void setTo(String to) {
    this.to = to;
    }
    
    public String getJourneyDate() {
    return journeyDate;
    }
    
    public void setJourneyDate(String journeyDate) {
    this.journeyDate = journeyDate;
    }
    
    public List<Passanger> getPassangers() {
    return passangers;
    }
    
    public void setPassangers(List<Passanger> passangers) {
    this.passangers = passangers;
    }
    
    }
    

    Passanger.Java

    public class Passanger {
    
    @SerializedName("Passenger")
    @Expose
    private String passenger;
    @SerializedName("BookingStatus")
    @Expose
    private String bookingStatus;
    @SerializedName("CurrentStatus")
    @Expose
    private String currentStatus;
    
    public String getPassenger() {
    return passenger;
    }
    
    public void setPassenger(String passenger) {
    this.passenger = passenger;
    }
    
    public String getBookingStatus() {
    return bookingStatus;
    }
    
    public void setBookingStatus(String bookingStatus) {
    this.bookingStatus = bookingStatus;
    }
    
    public String getCurrentStatus() {
    return currentStatus;
    }
    
    public void setCurrentStatus(String currentStatus) {
    this.currentStatus = currentStatus;
    }
    
    }
    

    以下是根据您在问题中提供的响应生成的类。 您可以使用此链接为 JSON 响应生成 POJO 类。 JSON TO POJO

    添加这个 gradle:

    implementation 'com.google.code.gson:gson:2.8.2'
    

    初始化 Gson 构建器:

    private Gson gson;
    
    
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.setDateFormat("M/d/yy hh:mm a");
    gson = gsonBuilder.create();
    

    使用 GSON 解析 JSON

    gson.fromJson(jsonObject.getJSONObject("data").toString(), Example.class);
    

    这些是使用 GSON 解析 JSON 的基本步骤。

    更多信息可以参考以下文章:

    Parsing JSON on Android using GSON

    或查看 GSON 官方 GitHub 存储库

    GSON

    【讨论】:

    • 谢谢,这对我很有帮助
    猜你喜欢
    • 2017-05-12
    • 1970-01-01
    • 2020-01-29
    • 2020-10-18
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2020-02-29
    相关资源
    最近更新 更多