首页 > 解决方案 > 为什么我无法显示我的列表元素?- 爪哇

问题描述

我的清单有问题。我的目标是从我的 json 列表中创建一个 JTree。为此,我将我的 json 转换为我要列出我的患者的位置。但我什至不能显示我的病人的名字。也许我的代码让我的问题更清楚。我将不胜感激任何建议!

我的病人班:

public class Patient {

private String name;
private String surname;
private String pesel;


public Patient(String name, String surname, String pesel) {
    this.name = name;
    this.surname = surname;
    this.pesel = pesel;

}

public String getName(){return name;}
public void setName(String name){this.name = name;}

public String getSurname(){return surname;}
public void setSurname(String surname){this.surname = surname;}

public String getPesel(){return pesel;}
public void setPesel(String pesel){this.pesel = pesel;}
}

我的 PatientList :(这个方法有效,当我使用它将医学 json 转换为药物列表时我没有问题)

public List<Patient> FromJsonToArray1() throws IOException {
    String patientsJson = initArray("Patients.json").toString();
    Gson gson = new Gson();
    java.lang.reflect.Type patientsListType = new TypeToken<ArrayList<Patient>>() {}.getType();
    List<Patient> patientArray = gson.fromJson(patientsJson, patientsListType);
    return patientArray;
}

这是我显示患者姓名的功能。

 public  void jtreecreator() throws IOException {
    List<Medicine> medicineList = FromJsonToArray();
    List<Patient> patientList = FromJsonToArray1();
    medicinesDataMethods medicinesdatamethods = new medicinesDataMethods();
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Patients");
    Patient c = patientList.get(0);
    Medicine d = medicineList.get(0);
    DefaultTreeModel treeModel = new DefaultTreeModel(root);
    JTree tree = new JTree(treeModel);
    JScrollPane scrollPane = new JScrollPane(tree);
    JOptionPane.showMessageDialog(null,c.getSurname());
    JOptionPane.showMessageDialog(null, d.getName());
}

调用此函数后,它显示 d.getName(),但 c.getSurname() 不起作用。

它是我存储患者的 json:

[
  {
    "Pesel": "1111",
    "Surname": "Walker",
    "Name": "Johny "
  },
  {
    "Pesel": "11111",
    "Surname": "Walker1",
    "Name": "Johny1 "
  }
]

调试后,我发现我在 FromJsonToArray1() 中创建的列表有患者对象,但姓名、姓氏和 pesel 的值为空。:C

标签: javajsonlistgson

解决方案


问题是类和 json 中的属性名称不匹配。你可以修改Patient

class Patient {

    @SerializedName("Name")
    private String name;

    @SerializedName("Surname")
    private String surname;

    @SerializedName("Pesel")
    private String pesel;

    // getters and setters, constructor, etc. here
}

推荐阅读