【发布时间】:2014-10-08 06:21:19
【问题描述】:
我正在尝试获取 JSON 对象并将它们放入一个集合中(我选择了列表)。通过使用适当的 getter 和 setter 创建 BuiltCharacter,我已经能够将 JSON 响应解组为单个 POJO。对于 JSON 元素数组,我尝试了以下方法:
List<BuiltCharacter> characters = response.readEntity(new GenericType<List<BuiltCharacter>>(){});
和
List<BuiltCharacter> characters = client.target(uri).request(MediaType.APPLICATION_JSON).get(new GenericType<List<BuiltCharacter>>(){});
使用这些方法让我得到了以下结果:
线程“main”java.lang.ClassCastException 中的异常:BuiltCharacter 无法转换为 java.util.List
我最初使用 Character 作为类名,但被提醒这是一个保留的类名。不过,我不知道这里发生了什么!
【问题讨论】:
-
您尝试反序列化的 JSON 看起来如何?真的是数组吗?
-
@MichalGajdos,这是我正在使用的示例:census.soe.com/get/ps2:v2/character/… 如果我尝试为此使用单个 POJO,我上面的两个代码示例实际上都会成功地将两个 JSON 元素读入一个目的。因此,当我查找 character.first_lower 时,它将返回“Dreadnaut”和“Daddy”。令人困惑!
-
您愿意分享更多代码吗?可能是整个方法,甚至是 REST 资源类?
-
嗨,我已经开始了这个赏金。你可以在这里看到一个例子:krishantha.net/notes/…。不起作用的是方法
public List<SalesType> getSalesType() { WebTarget target = client .target("http://localhost:8080/SalesMonitor/webapi/"); List<SalesType> response = target.path("saletypes") .request(MediaType.APPLICATION_JSON).get(new GenericType<List<SalesType>>(){}); System.out.println(response); return response; },我得到SalesType cannot be cast to java.util.List -
@George 请作为答案发布(注意它只是参考;您可以稍后将其删除)(1)您的资源类(2)SalesType 类(3)您的依赖项。我无法重现该问题。 OP 链接到的 JSON 是一个 JSON 对象,它不映射到列表。它需要是一个 JSON 数组。