簡體   English   中英

GSON將json對象轉換為JAVA對象

[英]GSON converting json objects to JAVA object

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();
    }
}

我想將給定的JSON轉換為2個不同的Java對象(即StudentPerson )。 如何在JSON實現此目的。 內部階級是做到這一點的唯一方法嗎? (即使這不起作用)。 我也嘗試通過集裝箱運輸以及內部類來實現。 如果還有其他庫,請幫助。

在JSON數據中,變量名是personstudent 因此,您還必須在POJO類中定義相同的名稱。 因此,在這種情況下,您必須將變量重命名為:

public person person;
public student student;

如果您不想更改變量的名稱,則可以使用SerializedName批注定義其JSON變量名稱:

@SerializedName("person")
public person p;

@SerializedName("student")
public student s;

還有一件事:根據JAVA編碼標准,類名應以大寫字母開頭。 因此,最好分別使用班級名稱作為PersonStudentAdmit

如下更改您的Admit類對象。

當您將json對象映射到對應的POJO類中的variaiable時,兩個名稱應該相同。json對象的名稱應與綁定變量名稱匹配

class Admit
   {

       public person person;

       public student student;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM