使用Struts2 Json插件时出现Json序列化问题
我有一个具有3个属性的action类。我正在使用Struts2 Json插件来序列化action类。我能够按照我的期望序列化字符串selectedCompany 问题 People使用Struts2 Json插件时出现Json序列化问题,json,serialization,struts2,struts2-json-plugin,Json,Serialization,Struts2,Struts2 Json Plugin,我有一个具有3个属性的action类。我正在使用Struts2 Json插件来序列化action类。我能够按照我的期望序列化字符串selectedCompany 问题 PeopleArrayList属性用空值序列化。我似乎找不到我犯了什么错误 Json_响应: 动作类: package json; import java.util.ArrayList; import com.google.gson.Gson; import com.opensymphony.xwork2.ActionSup
ArrayList
属性用空值序列化。我似乎找不到我犯了什么错误
Json_响应:
动作类:
package json;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import dao.DataAccess;
public class Json extends ActionSupport implements Preparable {
private static final long serialVersionUID = -8415223624346993447L;
private ArrayList<String> list;
private String selectedCompany = "Buhin Engineers";
private ArrayList<Person> people;
public ArrayList<String> getList() {
return list;
}
public void setList(ArrayList<String> list) {
this.list = list;
}
public String getSelectedCompany() {
return selectedCompany;
}
public void setSelectedCompany(String selectedCompany) {
this.selectedCompany = selectedCompany;
}
public ArrayList<Person> getPeople() {
return people;
}
public void setPeople(ArrayList<Person> people) {
this.people = people;
}
public String execute(){
list = new ArrayList<String>();
list.add("Yamaha");
list.add("Hero Honda");
return SUCCESS;
}
@Override
public void prepare() throws Exception {
// TODO Auto-generated method stub
populatePeople();
}
private void populatePeople() {
// TODO Auto-generated method stub
DataAccess da = new DataAccess();
setPeople(da.retrievePeople());
}
}
包json;
导入java.util.ArrayList;
导入com.google.gson.gson;
导入com.opensymphony.xwork2.ActionSupport;
导入com.opensymphony.xwork2.Preparable;
导入dao.DataAccess;
公共类Json扩展ActionSupport实现了Preparable{
私有静态最终长serialVersionUID=-8415223624346993447L;
私有数组列表;
私有字符串selectedCompany=“Buhin Engineers”;
私人ArrayList人;
公共ArrayList getList(){
退货清单;
}
公共无效集合列表(ArrayList列表){
this.list=列表;
}
公共字符串getSelectedCompany(){
返回所选公司;
}
公共无效集合selectedCompany(字符串selectedCompany){
this.selectedCompany=selectedCompany;
}
公共数组列表getPeople(){
还人,;
}
公共人员(ArrayList人员){
这个。人=人;
}
公共字符串execute(){
列表=新的ArrayList();
列表。添加(“雅马哈”);
添加(“英雄本田”);
回归成功;
}
@凌驾
public void prepare()引发异常{
//TODO自动生成的方法存根
populatePeople();
}
私有void populatePeople(){
//TODO自动生成的方法存根
DataAccess da=新的DataAccess();
setPeople(da.retrievePeople());
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="json-default">
<action name="Json" class="json.Json">
<result type="json">
<param name="includeProperties">selectedCompany,people,list</param>
</result>
</action>
</package>
</struts>
所选公司、人员、列表
列表作为数组发布,因此您需要定义要包含的数组。像
people\[\d+\]\..*,list\[\d+\]\..*
如果列表
是对象的类型(而不是简单的字符串
),则可以将结果缩小到选定的属性,如:
employee\[\d+\]\.lName,employee\[\d+\]\.fName,
如果列表
对象具有内部对象,则可以执行以下操作:
//The employee\[\d+\]\.address.addressline1 is not enough !!
//May be one can suggest better idea here :)
employee\[\d+\]\.address,employee\[\d+\]\.address.addressline1
可能重复的