gpt4 book ai didi

java - 改造预期为 BEGIN_OBJECT,但为 BEGIN_ARRAY

转载 作者:IT老高 更新时间:2023-10-28 12:43:43 27 4
gpt4 key购买 nike

我对 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);
}

当我在我的成功方法上使用它时,它会抛出错误

Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column2

这里有什么问题?

最佳答案

现在您正在解析响应,就好像它的格式如下:

{
"contacts": [
{ .. }
]
}

该异常告诉您这一点,因为您期望在根处有一个对象,但实际数据实际上是一个数组。这意味着您需要将类型更改为数组。

最简单的方法是在回调中使用列表作为直接类型:

@GET("/users.json")
void contacts(Callback<List<User>> cb);

关于java - 改造预期为 BEGIN_OBJECT,但为 BEGIN_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com