【问题标题】:Retrofit Expected BEGIN_OBJECT but was BEGIN_ARRAY android改造预期 BEGIN_OBJECT 但 BEGIN_ARRAY android
【发布时间】:2014-10-07 10:07:23
【问题描述】:

我对 JSON 解析相当陌生,我正在使用 GJson 库并遇到了这个问题。

I'm trying to parse this JSON reponse:

这是我的模型类:

public class JsonModel {    
    public int posterId ;
    public String title ;   
    public String descraption ;
    public String category ;    
    public String director ;
    public String written ;
    public String stars ;
    public String georgia_time ;
    public String wold_time ;
    public String ipone_5 ;
    public String ipone_5_blur ;
    public String ipone_4 ;
    public String ipone_4_blur ;
    public String youtube ;
    public String MovieFbID ;
    public String imdb ;
    public Cinemas cinemas ;
}

class Cinemas{

    public List <Cinema> Cinemaname;
}

class Cinema{

    public String cinemaName ;
    public List<info> info ; 
}

class info{

    public String time; 
    public String hole ;
    public String start_time ;
    public String end_time ;
}

我像这样反序列化我的 json

try {

            Gson gson = new Gson();

            JsonModel[] res1 = gson.fromJson(SpleshScreen.my_json, JsonModel[].class);

            JsonModel jsonModel = new JsonModel();


            for (int i = 0; i < res1.length; i++) {

                ServerItems objItem = new ServerItems();
                objItem.setImage(imageurl+jsonModel.ipone_4);


                Log.e("imageee", objItem.getImage());
                arrayOfList.add(objItem);

            }

我的代码最后一行有错误

this is a my logcat error

【问题讨论】:

    标签: java android json gson


    【解决方案1】:

    如您所见,json 的第一个字符是[。这是数组开始的字符。当你反序列化 json 时,你告诉 Gson 你想要一个对象,而 Gson 找到的是一个数组。所以你想在你的代码中改变的是:

    JsonModel[] res1 = gson.fromJson(SpleshScreen.my_json, JsonModel[].class);
    

    之后你可以像这样得到第一个:

    JsonModel jsonModel = res1[0];
    

    【讨论】:

    • De Clippelit 正在工作,但我如何更改您的最后一行代码。我的意思是,目前我只能得到第一个项目,但我想检查我所有的第一个项目,在 json 中有 3 个项目。
    • 我不确定你的意思。您想从数组中获取所有 JsonModel 对象吗?您可以在数组上的 for 循环中单独获取它们。
    • 我更新了我的代码,但没有工作@Inneke De Clippel
    【解决方案2】:

    试试这个代码:

    res1 = gson.fromJson(SpleshScreen.my_json, JsonModel[].class);
    

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 2014-08-01
      • 2020-02-10
      • 2015-11-26
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2019-02-06
      相关资源
      最近更新 更多