Java 从json数组获取列表

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

我有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 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。查看我的编辑“演示”