码迷,mamicode.com
首页 > Web开发 > 详细

struct2-json

时间:2015-08-20 01:04:29      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

一、JSON是什么?

:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解

析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C , C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

 

二 、struts2对于JSON有什么支持?

:struts2提供了一个struts2-json-plugin.jar 用于支持JSON的使用。当我们在struts2中使用JSON的时候必须导入struts2-json-plugin.jar

并且需要一下几点:

 

//struts2-json-plugin.jar中struts-plugin.xml配置信息:

      <struts>

        <package name="json-default" extends="struts-default">

          <result-types>

             <result-type name="json" class="org.apache.struts2.json.JSONResult"/>

          </result-types>

           <interceptors>

            <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>

   </interceptors> </package>

</struts>

 

 

通过配置信息我们可以知道:

  1.json-default其实是继承了struts-default的

  2.定义了一个name为json的返回类型和一个name为json的拦截器 

  3.<action name="*" class="*">

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

   </action>

     //我们需要将result的 返回类型定义为json

 

三、关于JSON在struts.xml中的一些属性的功能。

 

<action name="*"  class="*">
  <result name="success" type="json">
    <param name=""></param>//关于对JSON的一些定义

    /*excludeProperties   //代表排除Action中的哪些属性,排除多个属性时,使用逗号进行分隔(即不需要序列化的属性)
    例:
    <param name="excludeProperties">age</param>  排除getAge()这个方法

    includeProperties   //代表包含Action中的哪些属性,包含多个属性是,使用逗号进行分隔(即需要序列化的属性)
    例:
    <param name="includeProperties">address</param>包含getAddress()

    excludeNullProperties //代表排除Action中属性值为空的字段
    例:
    <param name="excludeNullProperties">true</param> 
    使用true/false 默认为false(即包含属性值为null的字段)

    root  //代表从哪里开始序列化
    例:
    <param name="root">person</param> person对应的可以是一个属性,也可以是一个对象,也可以是一个集合
    //当在这里定义后,只会将person进行序列化,如果person是一个对象,则会将person对象中所有的getter方法都进行序列化

    注意:如果相同属性同时定义了excludeProperties和includeProperties
    那么excludeProperties的优先级要高,因此不对
    该属性进行序列化
    */
  </result>
</action>

 

 

四、关于JSON在Action对象中注解的使用。

:对于JSON的注解主要有一下几个属性可以定义
name:指定序列化的时候对应的名称
例:
  @JSON(name = "myname") 
  {
    myname:"张三"
  } 
  
  public String getUsername() {
    return username;
  }

serialize:对该方法进行序列化  true/false

例:
  @JSON(serialize=true) 对该方法序列化,如果为false则不进行序列化
  public String getUsername() {
    return username;
  }

deserialize:不对该方法进行序列化  true/false

例:
  @JSON(deserialize=true) 不对该方法序列化,如果为false则进行序列化
  public String getUsername() {
    return username;
  }

format:设置JSON对该方法的转换方式,一般用于对时间进行转换 

例:
  @JSON(format="yyyy-MM-dd")  则客户端接收的JSON中date对应的值为:
  {
    date:"2011-10-2"
  }
  public Date getDate() {
    return date;
  }

 

五、具体的实例:

Action: 

     package org.viancent.action;  
  
      import java.util.Date;  
      import org.apache.struts2.json.annotations.JSON;  
      import com.opensymphony.xwork2.ActionSupport; 
  
public class GetJsonAction extends ActionSupport { private String username; private String password; private int age; private Date date; @JSON(serialize = false) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @JSON(name="mypassword") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @JSON(format="yyyy-MM-dd") public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String execute() throws Exception { this.setDate(new Date()); this.setAge(10); this.setPassword("world"); this.setUsername("hello"); return SUCCESS; } }

 

struts.xml:

<struts>  
    <package name="struts2"  extends="json-default">  
    //这里一定要继承json-default  
        <action name="getjsons" class="org.viancent.action.GetJsonAction">  
            <result name="success"  type="json">  
            //这里一定要定义type属性为json  
                <param name="excludeProperties">age</param>       
            //排除getAge()方法            
            </result>  
        </action>  
  
    </package>  
</struts>  

 

 JSP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
    <head>  
        <script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script>   //使用jquery一定要导入js  
<script type="text/javascript"> //使用jquery实现异步提交 function getJson() { $.post( "/struts2/getjsons.action",{},
                function(returnedData,status) { if("success"==status) { alert(returnedData); } } ) } </script> </head> <body id="theBody"> <input type="button" value="GetJson" onclick="getJson();"> </body> </html>

 

 

得到的结果为:

{"date":"2011-03-21","mypassword":"world"} 

struct2-json

标签:

原文地址:http://www.cnblogs.com/huangcongcong/p/4743761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!