方法返回空列表



我用这个方法读取一个json文件。

public class StudentListJson {

public static List<Student> getStudentList() throws IOException {
ObjectMapper mapper = new ObjectMapper();
List<Student> studentList = null;
String fileName = "C:/Users/bar1s/IdeaProjects/Week4/src/main/java/student.json"; 

String stringJson=new String(Files.readAllBytes(Paths.get(fileName)));

studentList=Arrays.asList(mapper.readValue(stringJson,new TypeReference<>(){}));

ProcessController.isReaded=true;
return studentList;
}

}

json文件:

[
{"name":"name1", "surname":"surname1", "age": 18},
{"name":"name2", "surname":"surname2", "age": 19},
{"name":"name3", "surname":"surname3", "age": 20},
{"name":"name4", "surname":"surname4", "age": 21}
]

在这个类中,我尝试获取json列表并打印它,但studentList是空的。

public class ReadJson implements Runnable  {

public static List<Student> studentList;
@Override
public void run() {
try{
System.out.println("Reading thread is sleeping");
Thread.sleep(1000);
studentList = StudentListJson.getStudentList();
studentList.stream().forEach(x -> System.out.println(x.toString()));

} catch (IOException e) {
e.printStackTrace();
}
}
}

学生类。

public class Student {
private String name;
private String surname;
private int age;
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", surname='" + surname + ''' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

getStudentList方法可以读取文件,并在该方法内,我可以打印所有列表,但当我尝试返回该列表,然后我尝试打印该列表在ReadJson类列表得到null。为什么?

这个代码返回null,这是我的问题。

studentList = StudentListJson.getStudentList();

您是否尝试将所需类型的列表元素包含到typerreference中?

new TypeReference<Student>() { }

最新更新