Retrofit预期BEGIN_OBJECT但是BEGIN_ARRAY android

时间:2014-10-07 10:07:24

标签: java android json gson

我对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

2 个答案:

答案 0 :(得分:1)

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

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

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

JsonModel jsonModel = res1[0];

答案 1 :(得分:0)

试试这段代码:

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