Java:从使用对象获取数组创建CSV

时间:2020-01-24 06:21:11

标签: java

我有

data= [{
          id=1, 
          employee_name=Tiger Nixon, 
          employee_salary=320800, 
          employee_age=61, 
          profile_image=
       }, 
       {
          id=2, 
          employee_name=Garrett Winters, 
          employee_salary=170750, 
          employee_age=63, 
          profile_image=
       }, 
       {
          id=3, 
          employee_name=Ashton Cox, 
          employee_salary=86000, 
          employee_age=66, 
          profile_image=
       }, 
       {
          id=4, 
          employee_name=Cedric Kelly, 
          employee_salary=433060, 
          employee_age=22, 
          profile_image=
       }
      ]

我有员工课程

public class Employee {
    private String employee_name;
    private String employee_salary;
    private String employee_age;
    private String id;
    private String profile_image;

    public String toCsvRow() {
        String csvRow = "";
        for (String value : Arrays.asList(employee_name,employee_salary,employee_age)) {
            String processed = value;
            if (value.contains("\"") || value.contains(",")) {
                processed = "\"" + value.replaceAll("\"", "\"\"") + "\"";
            }
            csvRow += "," + processed;
        }
        return csvRow.substring(1);
    }

    public String getEmployee_name() {
        return employee_name;
    }

    public String getEmployee_salary() {
        return employee_salary;
    }

    public String getEmployee_age() {
        return employee_age;
    }          
}

我尝试过

Map<String, ArrayList<Employee>> map = mapper.readValue(url, Map.class);
ArrayList<Employee> emps = map.get("data");
emps.get(0).toCsvRow()

Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to org.example.model.Employee

现在我无法使用emps调用CSVRow。

1 个答案:

答案 0 :(得分:4)

使用Gson将JSON解析为ArrayList,对于CSV转换,您可以使用org.json.CDL

看到这很好用

String str = "[{" +
            "          id=1," +
            "          employee_name=\"Tiger Nixon\"," +
            "          employee_salary=320800," +
            "          employee_age=61," +
            "          profile_image=\"khkjh\"" +
            "       }," +
            "       {" +
            "          id=2," +
            "          employee_name=\"Garrett Winters\"," +
            "          employee_salary=170750," +
            "          employee_age=63," +
            "          profile_image=\"\"" +
            "       }," +
            "       {" +
            "          id=3," +
            "          employee_name=\"Ashton Cox\"," +
            "          employee_salary=86000," +
            "          employee_age=66," +
            "          profile_image=\"\"" +
            "       }," +
            "       {" +
            "          id=4," +
            "          employee_name=\"Cedric Kelly\"," +
            "          employee_salary=433060," +
            "          employee_age=22," +
            "          profile_image=\"\"" +
            "       }" +
            "      ]";


         try{

            Gson gson = new Gson();
            ArrayList<Employee> list = gson.fromJson(str, ArrayList.class);

            String csv = CDL.toString(new JSONArray(list));

        }catch (Exception e){
            e.printStackTrace();
        }

输出:

id,employee_name,employee_salary,employee_age,profile_image
    1.0,Tiger Nixon,320800.0,61.0,khkjh
    2.0,Garrett Winters,170750.0,63.0,
    3.0,Ashton Cox,86000.0,66.0,
    4.0,Cedric Kelly,433060.0,22.0