Java 从json数组获取列表
我有json字符串,我想从该字符串中获取数据 jsonString数据如下Java 从json数组获取列表,java,json,Java,Json,我有json字符串,我想从该字符串中获取数据 jsonString数据如下 [{"Eid":"1","name":"Rahim"},{"Eid":"2","name":"Karim"}] 我试过下面的代码 员工类别 public class Employee { private String Eid; private String name; //setters and getters Employee(){};//constructor Employee(String Ei
[{"Eid":"1","name":"Rahim"},{"Eid":"2","name":"Karim"}]
我试过下面的代码
员工类别
public class Employee {
private String Eid;
private String name;
//setters and getters
Employee(){};//constructor
Employee(String Eid,String name){}//constructor
}
try{
JSONArray jsonarray = new JSONArray(jsonString);
Gson gson = new Gson();
Employee employee = new Employee();
employee= gson.fromJson(jsonarray.toString(), Employee.class);
//display every employee details
logger.info(employee);
}
catch (Exception e) {
logger.error("Employee save > Error: " + e.getMessage());
}
主类
public class Employee {
private String Eid;
private String name;
//setters and getters
Employee(){};//constructor
Employee(String Eid,String name){}//constructor
}
try{
JSONArray jsonarray = new JSONArray(jsonString);
Gson gson = new Gson();
Employee employee = new Employee();
employee= gson.fromJson(jsonarray.toString(), Employee.class);
//display every employee details
logger.info(employee);
}
catch (Exception e) {
logger.error("Employee save > Error: " + e.getMessage());
}
但是得到错误:
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
请尝试以下代码:
Employee[] employeeArray= gson.fromJson(jsonarray.toString(), Employee[].class);
// iterate on employeeArray
for(Employee employee :employeeArray){
// here you can do your task on employee object
}
您正在读取的是员工记录集,而不是单个员工集。所以您应该在这里使用ArrayList或任何List类 修改如下代码(我已经测试了相同的代码,它工作正常) Employee.java
public class Employee implements java.io.Serializable {
private String Eid;
private String name;
public String getEid() {
return Eid;
}
public void setEid(String eid) {
Eid = eid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
gson.fromJson(json,ArrayList.class)代码>此行将根据JSON准备一个员工对象列表,并在将该列表分配给员工类型[list employeeList=gson.fromJson(JSON,ArrayList.class);
]时将对象类型转换为员工类类型 阅读JsonObject和JsonArray…您将得到提示..然后更改代码或输入以获得正确的输出哪一行引发异常?logger.info(employee);返回员工@1184367@Preeti是的,这将是Employee[]数组的哈希代码,它没有返回单个Employee,而是返回它的数组。您可以对它进行迭代,并找出数组中每个元素的详细信息。按字符串值迭代??还是json元素?这段代码没问题。我正在获取所有数据。我想尝试其他方法。在for循环中,我想为每个员工创建一个对象。。Employee emp1=新员工(Employee.getId(),Employee.getName(),Employee.getMobile());无法通过..如何创建该对象?所有变量都应为Camel大小写,并在类内为属性生成getter和setter方法。如何将单个员工的每个详细信息放入员工对象?这将在内部发生。你不需要分配它。它将从您的JSON中填充。您只需要有一组相同的JSON字段和Employee类字段以及相应的getter setter。查看我的编辑“演示”