Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java POJO的JSON对象列表_Java_Json_Jackson - Fatal编程技术网

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