struts2中返回json对象

web开发中经常会使用到json对象,比如从action返回给页面一个json对象。

可以做如下处理:

一、使用插件

1、加入jsonplugin-0.34.jar

2、在struts.xml中做如下配置

<package name="sysMenu" namespace="/" extends="json-default">

    <action name="sysMenu_*" method="{1}" 

                 class="cn.framework.system.menu.SysMenuAction">

        <result name="save">/sysMenu/search.jsp</result>

        <result name="init">/sysMenu/menu_manage.jsp</result>

        <result name="testJson" type="json"></result>

    </action>

</package>

  extends="struts-default" 改成 extends="default-default" 并加上 type="json"


3、做了如下配置后,Struts2  Action中只要提供了getter方法的都会被转成json对象

4、如果不想转成json对象——那么这样

@JSON(serialize=false)

    public SysMenu getSysMenu() {

       return sysMenu;

}

5、页面调用

<script type="text/javascript">

$(document).ready(function() {

    $.getJSON("gen_struts2/sysMenu_testJson.action" 

        {ts:new Date().getTime()},

        function(data){

            alert(data["sysMenu"]["menuName"]);

        });

    });

</script>


二、手工输出

1、加入gson-1.4.jar

2、Action

  在方法里:加上

  Gson gson new Gson();

 

  String result gson.toJson(list);//list为要转换为JSON对象的数据

 

  HttpServletResponse response ServletActionContext.getResponse();

  response.setContentType("text/json; charset=utf-8");

  response.setHeader("Cache-Control""no-cache"); //取消浏览器缓存

 

  PrintWriter out response.getWriter();

  out.print(result);

 

  out.flush();

  out.close();

  return null;

 



可以做成工具类JSONUtils.java

 

public class JSONUtils {

    public static void toJson(HttpServletResponse response, Object data) 

       throws IOException {

        Gson gson new Gson();

        String result gson.toJson(data);

        response.setContentType("text/json; charset=utf-8");

        response.setHeader("Cache-Control""no-cache"); //取消浏览器缓存

        PrintWriter out response.getWriter();

        out.print(result);

        out.flush();

        out.close();

    }

}


这时在struts.xml里就不用 加上 type="json"了

<action name="getGsonAction"class="com.test.action.json.GetGsonAction"></action>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值