【发布时间】:2019-08-16 14:20:14
【问题描述】:
我想使用改造接收项目并将它们解析为 Java 列表。 但是,服务器响应不是 JSON 数组,而是包含项目的 JSON 对象。这就是改造不能仅仅将响应转换为 java 列表的原因。
响应看起来像这样:
{
"4": {
"key": "value",
...
},
"5": {
...
},
...
}
通常,我会尝试收到这样的物品:
@GET("items")
Call<List<Item>> getItems();
但这显然不起作用,Retrofit 回复:Expected BEGIN_ARRAY but was BEGIN_OBJECT
使用改造将此对象转换为 java 列表的最佳选择是什么?
【问题讨论】:
-
我曾经遇到过这种情况,我相信Retrofit不可能像这样完全解析响应,我们必须捕获根对象->使用GSon将其转换为String,然后解析它手动。最好的方法:告诉服务员修复它,他做了一件非常糟糕和愚蠢的事情!
-
我认为解决方案可能类似于这篇文章:stackoverflow.com/questions/37550388/… 可能类似于 Call
- >>。尝试一下,祝你好运。
-
@ThinkTwiceCodeOnce 谢谢你的回答。我很确定飞利浦的服务器人员不会改变这一点。但希望他们不会再创造这样的东西。
-
@DanielSpiess:谢谢你的链接。它类似于 Fred 的回答,它解决了我的问题。
标签: java android json retrofit2