如何将JSON数据映射到JAVA中的任何对象?

时间:2014-07-02 09:36:24

标签: java json object map jersey

我想使用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响应映射到:

@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。如果对象是StudentAnimal还是其他什么?如果可能的话,我不需要创建该对象(我的意思是Customer,以及其他)。 你有什么想法或建议吗?

2 个答案:

答案 0 :(得分:0)

考虑使用Gson库:https://code.google.com/p/google-gson/ 那里的名单没有问题。

答案 1 :(得分:-1)

如果您的bean属性名称与JSON相同,则可以使用json-lib。 对于maven项目,只需输入

<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>

进入pom.xml。

JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(YOUR JSON STRING); RequestAction re = (RequestAction) JSONObject.toBean(jsonObject,RequestAction.class);