JSON到POJO的对象列表

时间:2014-09-15 18:23:40

标签: java json jackson

我有一个用户类:

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。我觉得这里有一些简单的东西......这是什么?

3 个答案:

答案 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}]