预期进行BEGIN_OBJECT的改造,但进行了BEGIN_ARRAY的改造

我是JSON解析的新手,我使用Square的Retrofit库,遇到了这个问题。


我正在尝试解析此JSON响应:


[

      {

        "id": 3,

        "username": "jezer",

        "regid": "oiqwueoiwqueoiwqueoiwq",

        "url": "http:\/\/192.168.63.175:3000\/users\/3.json"

      },

      {

        "id": 4,

        "username": "emulator",

        "regid": "qwoiuewqoiueoiwqueoq",

        "url": "http:\/\/192.168.63.175:3000\/users\/4.json"

      },

      {

        "id": 7,

        "username": "test",

        "regid": "ksadqowueqiaksj",

        "url": "http:\/\/192.168.63.175:3000\/users\/7.json"

      }

]

这是我的模型:


public class Contacts {


    public List<User> contacts;


}

...


public class User {


    String username;

    String regid;


    @Override

    public String toString(){

        return(username);

    }  


}

我的界面:


public interface ContactsInterface {


    @GET("/users.json")

    void contacts(Callback<Contacts> cb);


}

我的成功方法:


@Override

public void success(Contacts c, Response r) {

    List<String> names = new ArrayList<String>();

    for (int i = 0; i < c.contacts.size(); i++) {

        String name = c.contacts.get(i).toString();

        Log.d("Names", "" + name);

        names.add(name);

    }

    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,

            android.R.layout.simple_spinner_item, names);

    mSentTo.setAdapter(spinnerAdapter);

}

当我将其用于成功方法时,会引发错误


预期为BEGIN_OBJECT,但在第1行column2处为BEGIN_ARRAY


怎么了


catspeake
浏览 827回答 3
3回答

波斯汪

现在,您正在解析响应,就好像它是这样格式化的:{&nbsp; "contacts": [&nbsp; &nbsp; { .. }&nbsp; ]}异常告诉您,您期望在根目录有一个对象,但实际数据实际上是一个数组。这意味着您需要将类型更改为数组。最简单的方法是仅将列表用作回调中的直接类型:@GET("/users.json")void contacts(Callback<List<User>> cb);

汪汪一只猫

在您的界面中替换@GET("/users.json")void contacts(Callback<Contacts> cb);通过此代码@GET("/users.json")void contacts(Callback<List<Contacts>> cb);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Android