一个简单的Json实例,采用Struts2 + jQuery1.4.js +ajax
主要做法是在后台action中把List集合手动转成json格式的数据,然后,到前台页面显示。 也可以通过json插件的方式把Map集合转成json. 主要用到了struts2的核心包 +json-lib-2.1.jar ,jsonplugin-0.34.jar等等。
package org.test.action;
import net.sf.json.JSONObject;
public class AjaxLoginAction extends ActionSupport {
private static final long serialVersionUID = 8955525425647194202L;
// 用户Ajax返回数据
private String result;
private String loginName;
private String password;
//getter 和setter方式省略;
@Override
public String execute() {
// 用一个Map做例子
Map<String, String> map = new HashMap<String, String>();
// 为map添加一条数据,记录一下页面传过来loginName
map.put("name", this.loginName);
map.put("password",this.password);
List<Person> listPersons = new ArrayList<Person>();
Person person1 = new Person();
person1.setAddress("株洲");
person1.setId("100");
person1.setName("张三");
Person person2 = new Person();
person2.setAddress("长沙");
person2.setId("200");
person2.setName("李四");
listPersons.add(person1);
listPersons.add(person2);
//将要返回的map对象进行json处理
JSONObject jo = JSONObject.fromObject(map);
//传把list集合转成json格式;
String json = listConvertJson(listPersons);
//调用json对象的toString方法转换为字符串然后赋值给result
this.result = json;
System.out.println(this.result);
return SUCCESS;
}
/**
* list转成Json格式;
* @param list
* @return
*/
public String listConvertJson(List<Person> list){
StringBuffer sb = new StringBuffer();
sb.append("[");
for(int i =0;i<list.size();i++){
sb.append("{");
sb.append("\"name\":").append("\""+list.get(i).getName()+"\"").append(",");
sb.append("\"address\":").append("\""+list.get(i).getAddress()+"\"").append(",");
sb.append("\"id\":").append("\""+list.get(i).getId()+"\"");
sb.append("}");
if(list!=null && list.size()>0 && list.size()-1 != i){
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
}
转成json格式为:
[{"name":"张三","address":"株洲","id":"100"},{"name":"李四","address":"长沙","id":"200"}]
其中“[]”代表的是数组,“{}”代表的是具体的对象。
然后前台javascript使用如下方式解析即可:
var member = eval("("+data+")"); //包数据解析为json 格式 for(var i = 0;i<member.length;i++){ alert(member[i].name+","+member[i].id+","+member[i].address); }