【发布时间】:2018-01-29 14:07:05
【问题描述】:
请找到以下代码,我正在尝试将 JSONArray 对象设置为 List<type> 类型的 SET 方法。
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;
}
}
但我无法设置值,它会抛出错误
SalesOrder 类型中的方法 setOrder_files(List) 是 不适用于参数(JSONArray)。
请找到我的order_files 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"
}
]
请找到我的订单文件 POJO 类
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;
}
}
根据收到的 cmets - 我正在尝试将 JSONArray 转换为 ArrayList 并尝试将其作为参数传递给 sa.setOrder_files()
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);
但是在数组列表中添加项目时出现错误。
错误:类型 List 中的方法 add(OrderFile) 不适用于参数 (String)
【问题讨论】:
-
您的方法
setOrder_files(List<OrderFile> order_files)期望OrderFile列表作为参数,o.getJSONArray("order_files")返回一个JSONArray对象。 -
看看你的对象类型......你正试图将一个字符串添加到一个包含你的自定义对象的列表中
-
建议:使用Gson或Jackson将JSON转成POJO