3

我正在使用 GSON 解码从我们的服务器返回的 JSON 字符串。我没有遇到任何问题,直到我遇到了来自 API 的这个特定的 JSON 返回。返回格式如下:

"成功":1,"错误":[],"数据":{"524":{"id":"524"}, "525":{"id":"525"}}

对于其他返回,我将数据作为我自己创建的类的数组,但对于这个返回,它表示它是一个对象而不是数组。那么我应该如何格式化我的课程呢?

***编辑:我遇到的问题是“524”和“525”字段不是静态名称。它们取决于用户的凭据是什么。可能有字段 323、324、325 或单个字段 123。这完全取决于。我将如何动态处理这个问题?

已解决* 我必须<String, Object>在我的自定义类中将“数据”设为哈希图。然后在第一次解码之后,我把“数据”变成了一个 Object [] 类型的数组。然后对于每个 Object[i],我将其转换为 JSON 字符串。之后,我使用 gson.fromJson() 将其转换为我最初想要的样子。

4

2 回答 2

3

如果 API 给出的结果不一致,而您最终找不到这样做的原因,则一种选择是将对象解析为 GSON JSONObject o = gson.fromJson(String),然后将数据转换为列表(如果它不是一个列表)o.getElement("data").isList(), ETC..

完成后,您可以通过gson.fromJson(JSONObject,Class). 另一种方法是有两个类,每个实例一个,但如果这是拥有两个不同类的唯一原因,这似乎很草率。

于 2012-08-27T20:22:03.160 回答
1

GSON 是正确的。来自服务器的回复data是对象,其中两个成员也是对象。要成为数组data应该有方括号[]而不是花括号{}。更多关于 JSON 格式的信息在这里

服务器格式已更改,或者您尝试了另一个 API 版本,或者有人在服务器端犯了错误。

于 2012-08-27T20:27:57.477 回答