假设一个json数组中只有一个对象的信息,将其转换为对象很简单。现在我们考虑将一个包含多个对象信息的JSONArray转换为一个对象的List<Object>。
在这里我们用个小例子说明一下过程。
首先我们建立了一个People的类
public class People {
private String name;
private Integer age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
然后我们新建一个JSONArray存放多个People的信息,然后使用ObjectMapper将其映射到List<People>对象
需要引用的jar包有json-lib-0.9.jar,jackson-mapper-asl-1.9.13.jar,jackson-core-asl-1.9.13.jar.
public static void main(String[] args) {
List<People> device=null;
JSONArray pjson=new JSONArray();
JSONObject cjson1=new JSONObject();
cjson1.put("name", "小皮");
cjson1.put("sex", "男");
cjson1.put("age", 23);
JSONObject cjson2=new JSONObject();
cjson2.put("name", "教主");
cjson2.put("sex", "男");
cjson2.put("age", 25);
pjson.put(cjson1);
pjson.put(cjson2);
ObjectMapper objm = new ObjectMapper();
JavaType javaType = objm.getTypeFactory().constructParametricType(List.class, People.class);
try {
device=(List<People>)objm.readValue(pjson.toString(),javaType);
} catch (Exception e) {
e.printStackTrace();
}
for(int i=0;i<device.size();i++){
System.out.println("姓名:"+device.get(i).getName()+",性别:"+device.get(i).getSex()+",年龄:"+device.get(i).getAge());
}
}