【发布时间】:2016-06-20 23:41:50
【问题描述】:
我正在使用 Retrofit 和 Gson 进行 API 调用。我对来自服务器的响应有疑问。对于某些属性,它发送空的JSONArray 而不是空的JSONObject。例如:
正常情况下:
{
"pagination": {
"links": {
"next": "http://api.com/nextlink"
}
}
}
但有时当“链接”为空时,服务器会发送给我:
{
"pagination": {
"links": []
}
}
导致java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY。
我知道我可以在创建GsonBuilder 时使用自定义JsonDeserializer 对象“分页”和registerTypeAdapter 来处理它。
但我的问题是:对于所有回复,一般情况下都可以处理这种情况吗?我无权访问 API,因此无法更改它,我不知道哪些属性可以为空 JSONArray 而不是预期的 JSONObject。
谢谢。
【问题讨论】:
-
Expected BEGIN_ARRAY but Was BEGIN_OBJECT - 与一般解决方案类似的问题。
标签: android gson deserialization retrofit