gpt4 book ai didi

java - 将 JSONArray 转换为 POJO 类 List,无法转换

转载 作者:行者123 更新时间:2023-12-02 11:41:39 24 4
gpt4 key购买 nike

请找到下面的代码,我正在尝试将对象的 JSONArray 设置到 SET 中类型的方法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;
}
}

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

The method setOrder_files(List) in the type SalesOrder is not applicable for the arguments (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"
}
]

请找到我的 OrderFiles 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;
}
}

基于收到的评论 - 我正在尝试将 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);

但是在数组列表中添加项目时出现错误。

Error : The method add(OrderFile) in the type List is not applicable for the arguments (String)

最佳答案

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

这一行就是问题所在,您的函数 setOrder_files 需要一个列表而不是 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;
}
}

关于java - 将 JSONArray 转换为 POJO 类 List<type>,无法转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48503146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com