Java POJO的JSON对象列表
我有一个类用户:Java POJO的JSON对象列表,java,json,jackson,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
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格式的字符串(这是一个用户对象列表)。。。。解析它并使用ArrayList结束
我已经做到了这一点:
String json = "[{"name":"bill","age":12},{"name":"bob","age":20}];
ObjectMapper mapper = new ObjectMapper();
ArrayList<User> userList = mapper.readValue(json, User.class);
String json=“[{“name”:“bill”,“age”:12},{“name”:“bob”,“age”:20}];
ObjectMapper mapper=新的ObjectMapper();
ArrayList userList=mapper.readValue(json,User.class);
当然,问题是映射程序想要直接映射到用户对象,而不是用户对象列表。我觉得这里缺少了一些简单的东西……这是什么??List list2=mapper.readValue(jsonString,
List<User> list2 = mapper.readValue(jsonString,
TypeFactory.collectionType(List.class, User.class));
TypeFactory.collectionType(List.class,User.class));
如果我们想创建具体的JavaType实例,那么Jackon提供了TypeFactory(注意,对于版本>=1.8的使用,应该使用ObjectMapper完成,更多详细信息)。TypeFactory类提供了各种帮助器方法,如mapType、collectionType等。
List list2=mapper.readValue(jsonString,
TypeFactory.collectionType(List.class,User.class));
如果我们想创建具体的JavaType实例,那么Jackon提供了TypeFactory(注意,对于版本>=1.8的使用,应该使用ObjectMapper来完成,更多详细信息)。TypeFactory类提供了各种帮助器方法,如mapType、collectionType等。试试这种方法
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);
Type collectionType=new-TypeToken(){}.getType();
List userList=gson.fromJson(json,collectionType);
System.out.println(用户列表);
试试这种方法
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);
Type collectionType=new-TypeToken(){}.getType();
List userList=gson.fromJson(json,collectionType);
System.out.println(用户列表);
使用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);
使用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);
因此,与其映射到
用户,不如映射到ArrayList
?与其映射到用户,不如映射到ArrayList
?一些解释肯定会改善响应!这就是我所用的,它做了我希望它做的事情。如果你有j我上面列出的son和ech用户对象也有一个属性列表,如何将该因素纳入其中solution@Deslyxia您可以通过编写自定义反序列化程序来实现这一点,即MyDeser扩展了StdDeserializer一些解释肯定会改善响应!这就是我使用的反序列化程序,它实现了我希望它实现的功能。作为后续步骤如果您有上面列出的json,并且ech用户对象也有一个属性列表,那么如何将该因素考虑进去呢solution@Deslyxia您可以通过编写自定义反序列化程序来实现这一点,即MyDeser扩展StdDeserializer