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对象(即Student
和Person
)。我怎样才能在JSON
中实现这一目标。内在阶级是唯一的方法吗? (即使这不起作用)。我也尝试过通过集装箱船和内部类。如果还有其他图书馆请帮忙。
答案 0 :(得分:2)
此处在JSON数据中,变量名称为person
和student
。因此,您还必须在POJO类中定义相同的名称。
因此,对于这种情况,您必须将变量重命名为:
public person person;
public student student;
如果您不想更改变量名称,则可以使用SerializedName
注释定义其JSON变量名称:
@SerializedName("person")
public person p;
@SerializedName("student")
public student s;
还有一件事:根据JAVA编码标准,类名应以大写字母开头。因此,如果您分别使用类名Person
,Student
,Admit
,那会更好。
答案 1 :(得分:0)
更改您的Admit类对象,如下所示。
当您将json对象映射到相应POJO类中的varaiables时,两个名称应该相同.json对象的名称应该与绑定变量名称匹配
class Admit
{
public person person;
public student student;
public void printAdmit(){
System.out.println(person.getFirstName());
}