本文转自: http://www.blogjava.net/fuhoujun/archive/2008/10/04/232324.html
Apache提供的一个插件包,可以把
Action中的数据以
JSON做个封装然后返回。
它会将整个
action中的变量转化为
JSON数据
(根对象在
JSON中数据添加一个
”root”标识
)。如果要使用它,
Action必须遵循以下几点:
-
返回的页面类型中
”content-type”必须是
”application/json”.(这个已经
Internet Community采用
).
-
JSON内容必须是符合格式要求的
.
-
Action中
field必须有
public的
set方法
.(是不是没有
set方法就不会将
field添加到
JSON数据中,有待验证
).
-
它支持的类型有
: 基本类型
(int,long...String), Date, List, Map, Primitive Arrays, 其它
class, 对象数组
.
-
在
JSON中任何的
Object会被封装在
list或
map中,数据会被封装程
Long,如果是含有的数据则会被封装程
Double,数组会被封装程
List.
下面给出
JSON的数据格式:
{
"doubleValue": 10.10,
"nestedBean": { "name": "Mr Bean" },
"list": ["A", 10, 20.20, { "firstName": "El Zorro" }],
"array": [10, 20]
}
这个插件支持以下几个注释
:
注释名
|
简介
|
默认值
|
序列化
|
反序列化
|
name
|
配置
JSON
中
name
|
empty
|
yes
|
no
|
serialize
|
在
serialization
中
|
true
|
yes
|
no
|
deserialize
|
在
deserialization
中
|
true
|
no
|
yes
|
format
|
格式化
Date
字段
|
"yyyy-MM-dd'T'HH:mm:ss"
|
yes
|
yes
|
可以通过配置来显示指出要放在
JSON中
field,其中有个自己的验证规则需要研究
.
<!-- Result fragment -->
<result type="json">
<param name="excludeProperties">
login.password,
studentList.*".sin
</param>
</result>
<!-- Interceptor fragment -->
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*".sin
</param>
</interceptor-ref>
根对象
<result type="json">
<param name="root">
person.job
</param>
</result>
也可以使用拦截器配置操作父对象
<interceptor-ref name="json">
<param name="root">bean1.bean2</param>
</interceptor-ref>
将
JSON数据用注释封装
如果
wrapWithComments
设置为
true(
默认值为
false)
,则生成的
JSON
数据会变成这样
/* {
"doubleVal": 10.10,
"nestedBean": { "name": "Mr Bean" },
"list": ["A", 10, 20.20, { "firstName": "El Zorro" }],
"array": [10, 20]
} */
这样做可以避免
js中一些潜在的风险,使用时需要
:Var responseObject = eval("("+data.substring(data.indexOf(""/"*")+2, data.lastIndexOf(""*"/"))+")");
父类
“root”对象中父类的
field不会(会?)
默认存放到
JSON数据中,如果不想这样做,需要在配置时指定
ignoreHierarchy
为
false:
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
枚举类型
默认处理枚举类型时,会被处理成
JSON数据中
name等于枚举中
value而
value等于枚举中
name.
public enum AnEnum {
ValueA,
ValueB
}
JSON: "myEnum":"ValueA"
如果在处理枚举类型时,在
xml中配置了
enumAsBean,则会被当作一个
Bean处理,在
JSON数据中会有一个特别的属性
”_name”值为
name().这个枚举中的所有属性都会被处理
.
public enum AnEnum {
ValueA("A"),
ValueB("B");
private String val;
public AnEnum(val) {
this.val = val;
}
public getVal() {
return val;
}
}
JSON: myEnum: { "_name": "ValueA", "val": "A" }
Xml中配置
:
<result type="json">
<param name="enumAsBean">true</param>
</result>
分享到:
相关推荐
Struts2 JSON插件是用于增强Struts2框架对AJAX和JSON支持的一个插件。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得客户端和服务器之间的数据交换变得更加简单。在Struts2中,JSON插件提供...
在提供的文档《Struts2_Jsonplugin_详解.doc》和《JsonPlugin 使用.docx》中,你应该能找到更具体的使用示例和详细配置信息。这些文档可能涵盖了如何处理集合类型、自定义类型转换器、错误处理以及与其他Struts2功能...
为了方便ajax调用传输数据,在struts2中加入的json插件用来做对象的序列化和反序列化,json插件的下载地址 http://code.google.com/p/jsonplugin/ 1. 下载json插件包,将jar包拷贝到WEB-INF/lib目录 注:struts2...
2. **引入依赖**:添加struts2的核心库、JSON插件(jsonplugin.jar)、Struts2-Spring插件、Hibernate库、Spring库、JDBC驱动以及jQuery库。 3. **数据库设计**:创建合适的数据库表并能够在MyEclipse中管理。 4. **...
### Struts2整合JSON知识点详解 #### 一、概述 在现代Web开发中,JSON(JavaScript Object Notation)因其轻量级的数据交换格式而被广泛采用。Struts2作为Java Web开发中的一个重要框架,能够方便地与JSON进行整合...
### Spring、Struts、iBatis框架搭建流程详解 #### 一、框架下载与准备 在构建基于Spring、Struts和iBatis的项目时,首先需要下载这些框架的最新版本,并进行相应的准备工作。 ##### 1. Struts2框架 Struts2是一...
- **Struts2核心及插件**:struts2-core-2.0.11.2.jar、struts2-spring-plugin-2.0.11.2.jar - **XWork核心库**:xwork-2.0.5.jar - **其他工具类**:classes12.jar、ognl-2.6.11.jar ##### 3. 编写实体Bean 实体...
### JSON Plugin知识点详解 #### 一、JSON简介与特点 **JSON**(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Web应用程序中。它具有以下特点: 1. **易读性**:JSON数据格式简洁清晰,...
### SSI 增删改查:Java框架下的数据操作详解 #### 一、SSI与Spring、Struts结合实现增删改查 在Java开发领域,尤其是Web应用开发中,SSI(Server Side Include)通常指的是服务器端包含技术,但在本文档的上下...