2015-05-18 3 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 (т.е. Student и Person). Как я могу достичь этого в JSON. Является ли внутренний класс единственным способом сделать это? (Даже это не работает). Я пробовал делать это через контейнеровозы, а также внутренние классы. Если есть другие библиотеки, пожалуйста, помогите.GSON преобразования объектов JSON в объект JAVA

ответ

2

Здесь, в данных JSON, имена переменных: person и student. Таким образом, вы также должны определить одно и то же имя в своем классе POJO. так в этом случае вы должны переименовать переменные в:

public person person; 
public student student; 

Если вы не хотите, чтобы изменить имя переменной, то вы можете определить их JSON имя переменной с помощью SerializedName аннотацию:

@SerializedName("person") 
public person p; 

@SerializedName("student") 
public student s; 

Еще одна вещь: согласно стандартам кодирования JAVA, имя класса должно начинаться с заглавной буквы. Поэтому было бы лучше, если бы вы использовали имя класса как Person, Student, Admit соответственно.

+0

И он будет работать без внутренний класс? Предположим, у меня есть отдельные классы Admit, Student и Person? – Pavan

+0

Да, это сработает. –

+0

спасибо за помощь :) – Pavan

0

Измените свой объект класса «Сообщать», как показано ниже.

При отображении ваших JSon объектов к вашему varaiables в вашем соответствующем классе POJO, И имя должно быть имя same.The объекта JSon должен совпадать с именем переменного связывания

class Admit 
    { 

     public person person; 

     public student student; 

     public void printAdmit(){ 
      System.out.println(person.getFirstName()); 
     } 
Смежные вопросы