2015-05-18 58 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()); 
     }