Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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
GSON将json对象转换为JAVA对象_Java_Json_Gson - Fatal编程技术网

GSON将json对象转换为JAVA对象

GSON将json对象转换为JAVA对象,java,json,gson,Java,Json,Gson,我想将给定的JSON转换为两个不同的java对象(即Student和Person)。如何在JSON中实现这一点。内部类是唯一的方法吗?(即使这样也不行)。我也尝试过通过集装箱船和内部类来实现这一点。如果还有其他库,请提供帮助。在JSON数据中,变量名是person和student。因此,您还必须在POJO类中定义相同的名称。 因此,在这种情况下,必须将变量重命名为: class Admit { public Person p; public Student s; pub

我想将给定的
JSON
转换为两个不同的java对象(即
Student
Person
)。如何在
JSON
中实现这一点。内部类是唯一的方法吗?(即使这样也不行)。我也尝试过通过集装箱船和内部类来实现这一点。如果还有其他库,请提供帮助。

在JSON数据中,变量名是
person
student
。因此,您还必须在POJO类中定义相同的名称。 因此,在这种情况下,必须将变量重命名为:

class Admit {
    public Person p;
    public Student s;

    public void printAdmit() {
        System.out.println(p.getFirstName());
    }

    class Student {
        public long rollno;

        public String toString() {
            return "rollno: " + rollno;
        }

        public void setRollno(long rollno) {
            this.rollno = rollno;
        }
    }

    class Person {
        public String firstName;
        public String email;

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String toString() {
            return "name: " + firstName + "email: " + email;
        }
    }
}

class JSONParsing{

    public static void main(String [] args) throws Exception {

        String json = "{'student':{'rollno':3},'person':{'firstName':'pavan','email':'mehta@yahoo.com'}}";

        Gson gson = new Gson();
        //String stud = (String)jO.getString("student");
        Admit add = gson.fromJson(json, Admit.class);

        add.printAdmit();
    }
}
如果不想更改变量的名称,则可以使用
SerializedName
注释定义其JSON变量名称:

public person person;
public student student;

还有一件事:根据JAVA编码标准,类名应该以大写字母开头。因此,如果您使用的类名分别为
Person
Student
Admit
,则会更好

如下更改您的承认类对象

当您将json对象映射到相应POJO类中的变量时,两个名称应该相同。json对象的名称应该与绑定变量名称匹配

@SerializedName("person")
public person p;

@SerializedName("student")
public student s;

如果没有内部类,它也会工作吗?假设我有单独的招生、学生和个人课程?
class Admit
   {

       public person person;

       public student student;

       public void printAdmit(){
           System.out.println(person.getFirstName());
       }