将JSONArray转换为POJO类List <type>,无法转换

时间:2018-01-29 14:07:05

标签: java arrays json

请找到以下代码,我尝试将对象的JSONArray设置为List<type>类型的public class SalesOrder { public static SalesOrder fromJSONObject(JSONObject o) { SalesOrder sa=new SalesOrder(); sa.setOrderNumber(o.getString("order_number")); sa.setCustomerName(o.getString("customer_name")); sa.setOrder_files(o.getJSONArray("order_files")); return sa; } private String orderNumber; private String customerName; List<OrderFile> order_files; public List<OrderFile> getOrder_files() { return order_files; } public void setOrder_files(List<OrderFile> order_files) { this.order_files = order_files; } } 方法。

order_files

但是我无法设置值,它会抛出错误

  

SalesOrder类型中的方法setOrder_files(List)是   不适用于参数(JSONArray)。

请找到我的order_files":[ { "file_name":"05_06_Field_lenghts_Requirements.pdf", "file_type":"Invoice", "file_id":"59c9ede7c3c867a6b269e111" }, { "file_name":"ideas.JPG", "file_type":"Packaging List", "file_id":"59c9ee65c3c867a6b269e113" } ] JSONArray

public class OrderFile {

    String file_id;
    String file_name;
    String file_type;


    public String getFile_id() {
        return file_id;
    }
    public void setFile_id(String file_id) {
        this.file_id = file_id;
    }
    public String getFile_name() {
        return file_name;
    }
    public void setFile_name(String file_name) {
        this.file_name = file_name;
    }
    public String getFile_type() {
        return file_type;
    }
    public void setFile_type(String file_type) {
        this.file_type = file_type;
    }
}

请查找我的订单文件POJO类

sa.setOrder_files()

基于收到的评论 - 我试图将JSONArray转换为ArrayList并尝试将参数作为参数传递给 List<OrderFile> filelist=new ArrayList<OrderFile>(); JSONArray filearray= o.getJSONArray("order_files"); if(filearray!=null) { for(int i=0;i<filearray.length();i++) { filelist.add(filearray.getString(i)); } } sa.setOrder_files(filelist);

"statusCode":404

但是在arraylist中添加项目时会出现错误。

  

错误:类型List中的方法add(OrderFile)不适用于参数(String)

1 个答案:

答案 0 :(得分:1)

 sa.setOrder_files(o.getJSONArray("order_files"));

这一行是问题,你的函数setOrder_files需要一个List而不是JSON数组。

您应该更改函数的参数或发送列表而不是JSON数组。

public class SalesOrder {

    public static SalesOrder fromJSONObject(JSONObject o)
    {
        SalesOrder sa=new SalesOrder();
        sa.setOrderNumber(o.getString("order_number"));
        sa.setCustomerName(o.getString("customer_name"));
        sa.setOrder_files(o.getJSONArray("order_files"));
        return sa;

    }

    private String orderNumber;
    private String customerName;

    JSONArray order_files;

    public JSONArray getOrder_files() {
        return order_files;
    }
    public void setOrder_files(JSONArray order_files) {
        this.order_files = order_files;
    }
}