2015-05-18 55 views
0
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':'[email protected]'}}"; 

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

     add.printAdmit(); 
    } 
} 

我想給定JSON至2個不同的Java對象(即StudentPerson)轉換。我如何在JSON中實現這一點。內心階層是做這件事的唯一方法嗎? (即使這不起作用)。我嘗試過通過集裝箱以及內部課程來做到這一點。如果有其他圖書館請幫助。GSON轉換JSON對象到JAVA對象

回答

2

這裏在JSON數據中,變量名是personstudent。所以你必須在你的POJO類中定義相同的名字。 所以這種情況下,你必須重新命名變量:

public person person; 
public student student; 

如果你不想改變變量的名字,那麼你可以通過使用SerializedName註釋定義它們的JSON變量名:

@SerializedName("person") 
public person p; 

@SerializedName("student") 
public student s; 

還有一件事:根據JAVA編碼標準,類名應以大寫字母開頭。因此,如果您分別使用類名稱PersonStudentAdmit將會更好。

+0

火柴,它會不工作內部類也是如此?假設我分開承認,學生和人員課程? – Pavan

+0

是的,它會工作。 –

+0

感謝您的幫助:) – Pavan

0

更改您的Admit類對象,如下所示。

當你在相應的POJO類映射你的JSON對象到您的varaiables,這兩個名字應該是JSON對象的same.The名稱應與綁定變量名

class Admit 
    { 

     public person person; 

     public student student; 

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