Struts2使用註解方式返回Json數據
最近項目中需要使用struts2的註解方式實現Json數據的返回
講道理,網上一大堆解決方案,試了半天沒有一個完全解決我的問題,因此集百家之長寫了這篇博客,希望對大家有用。
1.引入struts2-json-plugin和struts2-convention-plugin的jar包
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
2.Action類註解
1.使用註解@ParentPackage("json-default")
註解Action類
2.設置result的type爲json
@Result(name = "error", type = "json")
3 @JSON註解
a.默認情況下以get方法會被序列化,
b.可使用註解 @JSON(serialize=false)關閉某個get方法的序列化。
c.如果在屬性get方法上面加 @JSON(name=”newName”),則返回的json數據中key是指定的新名稱。
d. @JSON(format =”yyyy-MM-dd’T’HH:mm:ss”)設置用於格式化json數據中的日期。
e. @JSON(deserialize=true)設置是否反序列化該屬性。
4.param參數設置
4.1.root參數:返回單個數據
使用方法::
@Action(value="xxxx",results={ @Result(name=“xxx”type="json",params={"root","要返回的數據名稱"})})
4.2. excludeNullProperties 參數:過濾屬性值爲null的數據
使用方法::
@Action(value="xxxx",results={ @Result(name=“xxx”type="json",params={“excludeNullProperties","true"})})
4.3. ignoreHierarchy 參數:表示是否忽略等級。ignoreHierarchy值默認爲true,設置爲false後會將父類和子類的屬性一起輸出。
使用方法::
@Action(value="xxxx",results={ @Result(name=“xxx”type="json",params={"ignoreHierarchy","true"})})
4.4. includeProperties 參數:輸出結果中需要包含的屬性值,這裏正則表達式和屬性名匹配,可以用“,”分割多個正則表達式。
使用方法::
@Action(value="xxxx",results={ @Result(name=“xxx”type="json",params={"includeProperties","msg,user\\.username,list\\[1\\]\\.password,map.*","prefix","true"})})
4.5. excludeProperties 參數:輸出結果需要排除的屬性值,用法與includeProperties相同。
使用方法::
@Action(value="xxxx",results={ @Result(name=“xxx”type="json",params={"excludeProperties","msg,user\\.username,list\\[1\\]\\.password,map.*","prefix","true")})