我在跟踪json后遇到问题:
{
"17":"asdf",
"18":"fdsa",
"19":"gfds",
"34":"vcxz",
"35":"oiue",
"36":"oiuy"
}
为:
public class CategoryList {
List<Category> list;
}
public class Category {
String id;
String name;
}
我收到以下IllegalStateException
:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
请告诉我哪里出错了。
答案 0 :(得分:1)
错误是相当不言自明的,deserialiser需要一个JSON数组,因为你的类包含List
。
尝试以下JSON:
{
"list": [
{
"id": "17",
"name": "asdf"
}
]
}
应正确序列化
答案 1 :(得分:1)
以下json
{
"17":"asdf",
"18":"fdsa",
...
}
是JSON对象而不是数组。 您的类(Category和CategoryList)应使用以下json:
{
list: [
{id: 17, name: "asdf"},
{id: 18, name: "fdsa"},
....
]
}
更改您的json或类。
编辑:问题是(如果我理解你的样本)你的json对象有可变数量的字段。这意味着你必须使用类似hashmap而不是类的东西。尝试将您的json反序列化为
Map<int, String>
您可以在此答案中找到一些帮助:https://stackoverflow.com/a/8103092/2880555(您将被重定向到此链接http://programmerbruce.blogspot.com/2011/06/gson-v-jackson.html,并要求在该页面中搜索“Gson代码将任何JSON对象转换为地图”