【发布时间】:2014-01-09 18:10:03
【问题描述】:
我正在尝试调用 iTunes REST 服务,该服务通过 RESTeasy 客户端返回有关 iTunes 中定义的类型的信息。此调用返回的 JSON 对象如下所示:
{
"35":{
"name":"iPod Games",
"id":"35",
"url":"https://itunes.apple.com/us/genre/ipod-games/id35"
},
"36":{
"name":"App Store",
"id":"36",
"url":"https://itunes.apple.com/us/genre/ios/id36?mt=8"
}
}
我已经像这样定义了我的响应对象模型:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ITunesGenre implements Serializable {
private static final long serialVersionUID = 4330727214147295490L;
@XmlElement
private String name = null;
@XmlElement
private String id = null;
...
}
但是,当我通过 RESTeasy 客户端进行调用时,我收到了序列化错误。我相信这是因为这不是一个真正的列表或对象数组。相反,似乎每个条目上都有一个“标识符”(在上面的示例中,“35”或“36”)。
给定一个像这样的 JSON 对象,我如何映射它以便 RESTeasy 客户端可以反序列化它?我以前没有遇到过这种格式的对象。我显然不能对每个标识符进行硬编码,因为会有多个标识符,而且它们可能会发生变化。
您可以通过clicking here 看到此调用返回的完整 JSON 对象(它相当大)。您会看到在整个对象中都可以找到此对象结构,而不是使用简单的对象列表或数组。
有什么想法吗?非常感谢您提供的任何帮助。
【问题讨论】:
-
请发布您在服务器上收到的确切错误消息?
-
恐怕这不能用JAXB来表达。我会接受
org.json.JSONObject
标签: java json rest jaxb resteasy