【发布时间】:2019-04-11 00:02:49
【问题描述】:
我终于可以开始解析我的代码了,但是当我到达 Json 的某些部分时,它似乎会抛出错误。由于某种原因,Json 中的某些元素与名称相似的元素不同。我正在使用的 API:http://api.nobelprize.org/v1/laureate.json?
例如:普通元素
"year": "someYear",
"category": "someCategory",
"share": "someint",
"motivation": "\"someMotivation\"",
"affiliations": [
{
"name": "SomeName",
"city": "someCity",
"country": "SomeCountry"
}
]
json 字符串后面的元素导致错误
"year": "someYear",
"category": "someCategory",
"share": "someint",
"motivation": "\"someMotivation\"",
"affiliations": [
[]
]
由于某种原因,API 在导致错误的 affiliations 元素中放置了一个空列表。
我目前的隶属关系类如下所示:
public class Affiliations {
String name;
String city;
String country;
}
我得到的错误:
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
【问题讨论】:
-
他们的 API 非常糟糕,除非
affiliations中的空数组有什么特殊含义。你需要一个自定义的反序列化器。 -
不幸的是,我一直坚持使用它,而且我认为没有任何理由包含一个空数组而不是 null。但正因为如此,它破坏了我的代码。你知道我将如何为它编写反序列化器吗?