我有一个用户类:
public class User{
private String name;
private Integer age;
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;}
}
我想要做的是获取json格式的字符串(这是一个User对象列表)....解析它并结束一个ArrayList
我已经达到了这个目的:
String json = "[{"name":"bill","age":12},{"name":"bob","age":20}];
ObjectMapper mapper = new ObjectMapper();
ArrayList<User> userList = mapper.readValue(json, User.class);
问题当然是映射器想要直接映射到User对象而不是用户对象List。我觉得这里有一些简单的东西......这是什么?
答案 0 :(得分:1)
List<User> list2 = mapper.readValue(jsonString,
TypeFactory.collectionType(List.class, User.class));
如果我们想要创建具体的JavaType实例,那么Jackon提供TypeFactory(注意版本&gt; = 1.8使用应该使用ObjectMapper,更多细节here)。 TypeFactory类提供各种辅助方法,如mapType,collectionType等。
答案 1 :(得分:1)
试试这种方式
Gson gson = new Gson();
User[] navigationArray = gson.fromJson(json, User[].class);
System.out.println(Arrays.toString(navigationArray));
或者这样
Type collectionType = new TypeToken<List<User>>() {}.getType();
List<User> userList = gson.fromJson(json, collectionType);
System.out.println(userList);
答案 2 :(得分:1)
当您使用Jackson ObjectMapper时,您可以:
String json = "[{\"name\":\"bill\",\"age\":12},{\"name\":\"bob\",\"age\":20}]";
ObjectMapper mapper = new ObjectMapper();
@SuppressWarnings("unchecked")
ArrayList<User> userList = mapper.readValue(json,ArrayList.class);
System.out.println(userList);
打印:
[{name=bill, age=12}, {name=bob, age=20}]