json架包在网上下了几次架包,我一度以为不可能是架包的问题,结果还是因为少了一个架包。。。。

弄了一天多总算成功了,试着记一下:

先创一个测试类test

public class test {

    private String a;
    private String b;
    public String getA() {
        return a;
    }
    public void setA(String a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
}

创建一个action类

private test t;
    private JSONObject retujson;
    
    public JSONObject getRetujson() {
        return retujson;
    }

    public void setRetujson(JSONObject retujson) {
        this.retujson = retujson;
    }

    public test getT() {
        return t;
    }

    public void setT(test t) {
        this.t = t;
    }

        public String testjson(){
     String a= ServletActionContext.getRequest().getParameter("a").toString();
     
String b= ServletActionContext.getRequest().getParameter("b").toString();
     System.out.println(a);
     System.out.println(b);
     t=new test();
     t.setA("aaa");
     t.setB("bbb");
        retujson=JSONObject.fromObject(t);
        System.out.println(retujson);
        return SUCCESS;
    }

retujson是返回页面的json数据

 

配置struts.xml:

<package name="test" extends="json-default" namespace="/">
        <action name="testjson" method="testjson" class="com.test.action.testaction">
            <result type="json">
                <param name="root">retujson</param>
            </result>
        </action>
    </package>

 

js代码:

$.ajax({
        url:"testjson.action",
        data:{"a":"aa","b":"bb"},
        async : false,
        type:"POST",
        dataType:"json",
        success:function(data){
            alert("ok");
            alert(data.a);
            alert(data.b);
            datas={"data":data};//将数据添加到全局
                },error:function(data){
                alert("no ok");
                }