我有
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。
使用 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