使用GSON解析Java中的JSON文件

使用GSON解析Java中的JSON文件,java,json,string,gson,Java,Json,String,Gson,我试图用java中的GSON解析这个JSON文件,但遇到了一些困难 {"group": [ { "name": "Team1 Student2", "email": "ctc-t1-s2", "contribution": { "score": 16.6, "comment": "From 'Team1 Student2' about 'Team1 Student2'\nAnd they said, \"You'll never get it done!

我试图用java中的GSON解析这个JSON文件,但遇到了一些困难

{"group": [
{
   "name": "Team1 Student2",
   "email": "ctc-t1-s2",
   "contribution": {
      "score": 16.6,
      "comment": "From 'Team1 Student2' about 'Team1 Student2'\nAnd they said, \"You'll never get it done!\""
   }
}
,{
   "name": "Team1 Student4",
   "email": "mmi-t1-s4",
   "contribution": {
      "score": 0.4,
      "comment": "From 'Team1 Student2' about 'Team1 Student4'\nAnd they said, \"You'll never get it done!\""
   }
}
,{
   "name": "Team1 Student3",
   "email": "pco-t1-s3",
   "contribution": {
      "score": 39.1,
      "comment": "From 'Team1 Student2' about 'Team1 Student3'\nAnd they said, \"You'll never get it done!\""
   }
}
,{
   "name": "Team1 Student1",
   "email": "eyr-t1-s1",
   "contribution": {
      "score": 23.9,
      "comment": "From 'Team1 Student2' about 'Team1 Student1'\nAnd they said, \"You'll never get it done!\""
   }
}],"confidential_comments": "That's all! It was \"fun\"! (said Team1 Student2)\nDon't forget: Bring your towel \\ the cake is a lie."}
现在我有三个班,其中一个是团体班:

  public class Group {
   private List<Student> group[];

   public Group(List<Student> students[]){
       this.group =  students;
    }

    public void setStudents(List<Student> students[]) {
        this.group = students;
    }

    public List<Student>[] getStudents() {
        return group;
    }

    @Override
    public String toString() {
        return "Group{" +
                "students=" + Arrays.toString(group) +
                '}';
    }
}
在我的主函数中,当我运行它时,我最终打印了一个空对象

 Gson gson = new Gson();

        JsonParser jsonParser = new JsonParser();

        try(Reader reader = new FileReader("FILE PATH")) {
            JsonElement jsonObject = jsonParser.parse((reader));
            System.out.println(jsonObject);

            Group students = gson.fromJson(jsonObject, Group.class);
            System.out.println(students);
            Student student = gson.fromJson(jsonObject, Student.class);
            System.out.println(student);

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

我想知道如何解析输入文件,以便将JSON字符串放入一个对象或对象列表中?很抱歉问了这么长的问题

我认为出现问题的地方是,在JSON
组中
已经是一个
列表
,但您正在尝试从gson检索组对象。我认为您需要的是一个不同的对象,比如
阅读器
响应
,如下所示:

class Response {
    private Group group;
}
然后做一些类似的事情:

Response response = gson.fromJson(jsonObject, Response.class);
Group = response.getGroup();
请注意,要使GSON正常工作,类中的字段名需要与JSON匹配。(因此
sfu_电子邮件
中的
Student
应按照JSON阅读
email


希望这能有所帮助,我想问题出在你的JSON
组中
已经是一个
列表
,但是你正在尝试从gson检索组对象。我认为您需要的是一个不同的对象,比如
阅读器
响应
,如下所示:

class Response {
    private Group group;
}
然后做一些类似的事情:

Response response = gson.fromJson(jsonObject, Response.class);
Group = response.getGroup();
请注意,要使GSON正常工作,类中的字段名需要与JSON匹配。(因此
sfu_电子邮件
中的
Student
应按照JSON阅读
email


希望这有助于
类包含
列表
,再次无需在
变量名称末尾添加
[]

  public class Group {

    private List<Student> group;

    public void setStudents(List<Student> students) {
        this.group = students;
    }

    public List<Student> getStudents() {
        return group;
    }

    @Override
    public String toString() {
        return "Group [group=" + group + "]";
    }
}

尝试使用上述解决方案。

类包含
列表
,同样不需要在
变量名称末尾添加
[]

  public class Group {

    private List<Student> group;

    public void setStudents(List<Student> students) {
        this.group = students;
    }

    public List<Student> getStudents() {
        return group;
    }

    @Override
    public String toString() {
        return "Group [group=" + group + "]";
    }
}
尝试上述解决方案