首先,我的问题与下面非常类似但是我不确定答案是否适用于我的具体问题,或者我是否需要澄清如何处理它: Convert LinkedHashMap<String,String> to an object in Java
我使用struts2 json rest插件将json数组转换为java数组。该数组通过ajax post请求发送,java接收此数据。但是,不是我期望的对象类型,而是作为LinkedHashmap接收它。这与结构中的json请求相同。
[
{advance_Or_Premium=10000, available=true},
{advance_Or_Premium=10000, available=true},
{advance_Or_Premium=10000, available=true}
]
数据全部存在并且正确但只是错误的类型。理想情况下,我想以我的对象类型发送数据,或者如果不可能,则将LinkedHashMap从键和值列表转换为对象数组。这是我正在使用的类,传入的数据是在create()方法中接收的:
@Namespace(value = "/rest")
public class OptionRequestAction extends MadeAbstractAction implements ModelDriven<ArrayList<OptionRequestRest>>
{
private String id;
ArrayList<OptionRequestRest> model = new ArrayList<OptionRequestRest>();
public HttpHeaders create()
{
// TODO - need to use model here but it's a LinkedHashmap
return new DefaultHttpHeaders("create");
}
public String getId()
{
return this.id;
}
public ArrayList<OptionRequestRest> getModel()
{
return this.model;
}
public ArrayList<OptionRequestRest> getOptionRequests()
{
@SuppressWarnings("unchecked")
ArrayList<OptionRequestRest> lReturn = (ArrayList<OptionRequestRest>) this.getSession().get("optionRequest");
return lReturn;
}
// Handles /option-request GET requests
public HttpHeaders index()
{
this.model = this.getOptionRequests();
return new DefaultHttpHeaders("index").lastModified(new Date());
}
public void setId(String pId)
{
this.id = pId;
}
public void setModel(ArrayList<OptionRequestRest> pModel)
{
this.model = pModel;
}
// Handles /option-request/{id} GET requests
public HttpHeaders show()
{
this.model = this.getOptionRequests();
return new DefaultHttpHeaders("show").lastModified(new Date());
}
}
令我困惑的一件事是,如果模型不是数组,此代码可以正常工作并返回正确的对象类型。如果我的问题不够清楚并且需要其他信息,请告诉我。感谢。