此问题在此处已有答案:
Why does Gson fromJson throw a JsonSyntaxException: Expected BEGIN_OBJECT but was BEGIN_ARRAY?(2个答案)
四年前就关门了。
服务器返回了一个JSON响应,格式如下:
[
{
"id": "one",
"values": {
"name": "John",
}
},
{
"id": "two",
"values": {
"name": "Bob",
}
}
]
下面是我设置的类:
public class TestClass implements Serializable {
@SerializedName("id")
private String id;
@SerializedName("values")
private List<String> values;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<String> getValues() {
return values;
}
public void setValues(List<String> values) {
this.values = values;
}
}
下面是将JSON解析为对象列表的代码:
String response = serverResponseHere;
Gson gson = new Gson();
String json = gson.toJson(response);
Type collectionType = new TypeToken<List<TestClass>>(){}.getType();
List<TestClass> values = gson.fromJson(json, collectionType);
但是,我得到以下错误:
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为开始_ARRAY,但实际为字符串
这是怎么回事?
2条答案
按热度按时间piah890a1#
您要将JSON响应内容
并将其转换为JSON
这将生成一个包含您的内容的JSON字符串。
当您尝试将其反序列化为
List<TestClass>
时,显然会失败,因为它是一个JSON字符串而不是JSON数组。在反序列化内容之前,不要将其序列化为JSON,因为它已经是JSON了。
其他人已经提到了这个问题,你的
values
字段与JSON内容不匹配。请看这里了解如何解决这个问题:mzmfm0qo2#
将您的服务器响应json从:
收件人: