【发布时间】:2014-08-23 01:00:12
【问题描述】:
我想使用 Jersey 将 JSON-Response 映射到我的 Java 对象中。我有这样的 Json 响应:
{
"act": "add",
"col": "student",
"data": [
{
"firstName": "alex",
"lastName": "homer",
"age": "18",
"roomNo": "1301"
},
{
"firstName": "alex",
"lastName": "homer",
"age": "18",
"roomNo": "1301"
}
]
}
这是我想将 Json 响应映射到的 bean:
@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
public class RequestAction implements RequestOperations {
@XmlElement(required = true, name = "act")
private String action;
@XmlElement(required = true, name = "col")
private String collectionName;
@XmlElement(required = false, name = "oid")
private String objectId;
@XmlElement(name = "data")
private List<Object> data;
public RequestAction() {
}
//getters setters
}
那么,我的问题是如何映射"data": {[....]}下的数据?
因为它也可以用任何Object 来识别。
在本例中,对象是Customer。如果对象是Student、Animal 或其他任何东西呢?如果可能,我不需要创建该对象(我的意思是Customer 和其他对象)。
你有什么想法或建议吗?
【问题讨论】:
-
'如果对象是 Student、Animal 或其他任何东西呢?这行不通。您必须使用比
Object更具体的类。 -
如果它会是任何东西,那么我想你应该使用 Map 来包含所有值。
-
西科尔斯基,你的意思是像这样使用 Map
field = new HashMap() ? -
如果所有数据都是同一类型,只需指定类型即可。否则,找到一个共同点(接口或抽象类),并使所有可以进入数据的类都扩展/实现这个超类型。
-
看看Jackson多态反序列化:wiki.fasterxml.com/JacksonPolymorphicDeserialization
标签: java json object map jersey