我是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);}我的成功方法:@Overridepublic 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怎么了
3 回答

波斯汪
TA貢獻1811條經驗 獲得超4個贊
現在,您正在解析響應,就好像它是這樣格式化的:
{
"contacts": [
{ .. }
]
}
異常告訴您,您期望在根目錄有一個對象,但實際數據實際上是一個數組。這意味著您需要將類型更改為數組。
最簡單的方法是僅將列表用作回調中的直接類型:
@GET("/users.json")
void contacts(Callback<List<User>> cb);

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
在您的界面中替換
@GET("/users.json")
void contacts(Callback<Contacts> cb);
通過此代碼
@GET("/users.json")
void contacts(Callback<List<Contacts>> cb);
添加回答
舉報
0/150
提交
取消