【问题标题】:how to make model class for json in android for retrofit?如何在android中为json制作模型类进行改造?
【发布时间】:2020-03-24 04:38:18
【问题描述】:

如何在 java android 中为改造中的 json 制作模型类 我有这个json

我在 android 中的 java 中创建了六个模型类。如下

模型 1 :- EventsResponseData.java

package com.galaktiknepal.eticketnepal.Models.NetworkingModels;

import com.google.gson.annotations.SerializedName;

public class EventsResponseData {

    @SerializedName("data")
    EventsData data;

    @SerializedName("status")
    boolean status;

    @SerializedName("categories")
    EventsCategories eventsCategories;

    public EventsData getData() {
        return data;
    }

    public void setData(EventsData data) {
        this.data = data;
    }

    public Boolean getStatus() {
        return status;
    }

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

    public EventsCategories getEventsCategories() {
        return eventsCategories;
    }

    public void setEventsCategories(EventsCategories eventsCategories) {
        this.eventsCategories = eventsCategories;
    }
}

模型 2 :-EventsData.java

package com.galaktiknepal.eticketnepal.Models.NetworkingModels;

import com.google.gson.annotations.SerializedName;

public class EventsData {

    @SerializedName("id")
    int id;

    @SerializedName("title")
    String title;

    @SerializedName("slug")
    String slug;

    @SerializedName("image")
    EventsImage image;

    @SerializedName("about")
    String about;

    @SerializedName("least_price")
    String least_price;

    @SerializedName("date_count")
    int date_count;

    @SerializedName("least_date")
    EventsLeastDate least_date;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSlug() {
        return slug;
    }

    public void setSlug(String slug) {
        this.slug = slug;
    }

    public EventsImage getImage() {
        return image;
    }

    public void setImage(EventsImage image) {
        this.image = image;
    }

    public String getAbout() {
        return about;
    }

    public void setAbout(String about) {
        this.about = about;
    }

    public String getLeast_price() {
        return least_price;
    }

    public void setLeast_price(String least_price) {
        this.least_price = least_price;
    }

    public int getDate_count() {
        return date_count;
    }

    public void setDate_count(int date_count) {
        this.date_count = date_count;
    }

    public EventsLeastDate getLeast_date() {
        return least_date;
    }

    public void setLeast_date(EventsLeastDate least_date) {
        this.least_date = least_date;
    }
}

模型 3 :- EventsImage.java

package com.galaktiknepal.eticketnepal.Models.NetworkingModels;

import com.google.gson.annotations.SerializedName;

public class EventsImage {

    @SerializedName("cropped")
        String cropped;

    public String getCropped() {
        return cropped;
    }

    public void setCropped(String cropped) {
        this.cropped = cropped;
    }

}

模型 4:- EventsLeastDate.java

package com.galaktiknepal.eticketnepal.Models.NetworkingModels;

import com.google.gson.annotations.SerializedName;

public class EventsLeastDate {

    @SerializedName("human")
    String human;

    @SerializedName("iso")
    String iso;

    @SerializedName("formatted")
    String formatted;

    @SerializedName("formatted_trim")
    String formatted_trim;

    public String getHuman() {
        return human;
    }

    public void setHuman(String human) {
        this.human = human;
    }

    public String getIso() {
        return iso;
    }

    public void setIso(String iso) {
        this.iso = iso;
    }

    public String getFormatted() {
        return formatted;
    }

    public void setFormatted(String formatted) {
        this.formatted = formatted;
    }

    public String getFormatted_trim() {
        return formatted_trim;
    }

    public void setFormatted_trim(String formatted_trim) {
        this.formatted_trim = formatted_trim;
    }

}

模型 5 :- EventsCategories.java

package com.galaktiknepal.eticketnepal.Models.NetworkingModels;

import com.google.gson.annotations.SerializedName;

public class EventsCategories {

    @SerializedName("id")
    int id;

    @SerializedName("sub_id")
    int sub_id;

    @SerializedName("name")
    String name;

    @SerializedName("icon")
    String icon;

    @SerializedName("slug")
    String slug;

    @SerializedName("seo")
    EventsSeo seo;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getSub_id() {
        return sub_id;
    }

    public void setSub_id(int sub_id) {
        this.sub_id = sub_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getSlug() {
        return slug;
    }

    public void setSlug(String slug) {
        this.slug = slug;
    }

    public EventsSeo getSeo() {
        return seo;
    }

    public void setSeo(EventsSeo seo) {
        this.seo = seo;
    }
}

模型 6:- EventsSeo.java

package com.galaktiknepal.eticketnepal.Models.NetworkingModels;

import com.google.gson.annotations.SerializedName;

public class EventsSeo {

    @SerializedName("keywords")
    String keywords;

    @SerializedName("desc")
    String desc;

    public String getKeywords() {
        return keywords;
    }

    public void setKeywords(String keywords) {
        this.keywords = keywords;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

这是我的改造 api

@POST("event/all")
Call<EventsResponseData> getEventsAllData();

这是我的改造电话

private void GetAllEvents(){
    Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://api.eticketnepal.com/api/")
            .addConverterFactory(ScalarsConverterFactory.create())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();
    JsonPlaceHolderApi jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);

    Log.e("testing : ","begain");
    Call<EventsResponseData> call = jsonPlaceHolderApi.getEventsAllData();
    call.enqueue(new Callback<EventsResponseData>() {
        @Override
        public void onResponse(Call<EventsResponseData> call, Response<EventsResponseData> response) 
{
            if(response.isSuccessful()){

              //  currentEventsResponseData=response.body();
                Log.e("event success"," "+response.body().toString());

            }else{

               Log.e("Message","sorry!.......we are unable to fetch user info .......");
            }
        }

        @Override
        public void onFailure(Call<EventsResponseData> call, Throwable t) {
            Log.e("Failure msg"," "+t.getMessage()+" / "+t.getCause());
        }
    });
}

我的代码向我抛出了这个错误 E/失败消息:java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 10 列路径 $.data 处为 BEGIN_ARRAY

请帮我解决这个问题

【问题讨论】:

标签: android json class model retrofit


【解决方案1】:

更改您的 EventsResponseData 类,您正在等待对象,但响应 api 返回对象数组

public class EventsResponseData {

@SerializedName("data")
List<EventsData> data;

@SerializedName("status")
boolean status;

@SerializedName("categories")
List<EventsCategories> eventsCategories;

public EventsData getData() {
    return data;
}

public void setData(List<EventsData> data) {
    this.data = data;
}

public Boolean getStatus() {
    return status;
}

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

public EventsCategories getEventsCategories() {
    return eventsCategories;
}

public void setEventsCategories(List<EventsCategories> eventsCategories) {
    this.eventsCategories = eventsCategories;
}

}

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2021-08-29
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2016-03-22
    • 2017-12-04
    • 2021-04-26
    • 2021-08-27
    相关资源
    最近更新 更多