【发布时间】:2013-05-05 09:27:12
【问题描述】:
我使用 Jersey 作为客户端将 JSON 解析为 Java 对象, 问题是我使用的服务返回不同类型的响应,每次都应该映射到不同的 Java 对象,所以我需要一种方法来进入解析过程并做出任意决定来告诉 Jersey 什么是确切的每次解析的对象类型。
编辑:
例如,如果我有 Java 类 A、B 和 C 以及 Json 响应,如下所示:
Data{
-list {
-0 :{Result should be mapped to A}
-1 :{Result should be mapped to B}
-2 :{Result should be mapped to C}
}
}
而list是ArrayList(或者可以是三个类的超类的ArrayList)。现在,当我要求 Jersey 解析这个 JSON 响应时,它会在处理 list 时找到一个 ArrayList 并且不知道要解析的对象的确切类型是什么,因此它将数据转换为 -0、-1、- 2 到linkedHashMap 作为键/值对。
【问题讨论】:
-
你试过Jackson吗?
-
旁注 - Jersey 是 JAX-RS 提供程序,而不是 JSON 解析库。关于主题 - 返回的对象有什么共同点吗?将代码的相关部分添加到问题中。
-
我在上面添加了更多说明
-
在您的架构中,您可以将列表设为类型 A、B 和 C 的选择。如果所有类型都具有相同的基本类型,那么您可以将其设为该基本类型的列表。其余的应该由解组器处理