项目中用到JSON之后,稍不注意就会出现问题,当然,遇到问题最多的情况就是项目集成Hibernate之后,由于Hibernate的懒加载带来的序列化问题。由于JSON的原理是将对象进行序列化,而序列化就是将对象字符串化,由于Hibernate的懒加载,会带来级联,就会导致序列化时将对象级联的对象全部序列化,然后再对级联的级联对象进行序列化,这样很可能就会报错,即使不报错,也会带来问题,本来只想返回前台一个对象的数据,结果返回了N个对象的数据,无疑导致了传输数据的压力。而解决这种问题主要有以下几种方法:
1.如果项目运用了struts2以及Strus2的jsonplugin,为了避免对不需要的对象进行传输,可以在get方法上加上@Json(serialize=false).这样在传递Json的时候就不会对此对象序列化。同理,如果遇到Hibernate的Entity,则对不需要传输的对象或数据的get方法上加上@Json(serialize=false),就不会对这些进行Json序列化。
2.第二种方法,就是在Struts2的返回值时候进行添加param标签,具体如下:
<result type="json"><param name="includeProperties">infoMsg</param></result>
上述方式为只传递变量为infoMsg的Json字符串。
<param name="includeProperties">userList\[\d+\]\.id</param>
上述为值传递userList集合中包含的对象里的id属性
<result type="json">
<param name="includeProperties">imgList\[\d+\]</param>
</result>
上述为传递imageList
<result type="json"><param name="excludeProperties">infoMsg</param></result>
上述为排除infoMsg
<result type="json">
<param name="root">userList\[\d+\]</param>
</result>
上述为值传递userList的根属性。比如userList有个id属性,则传递时的格式为{id:1},同样如果包传递的是个map,则不传递Map名称,只传递键值对。
分享到:
相关推荐
JSONPlugin-0.33.jar 是一个专门为Struts2框架设计的插件,主要用于扩展Struts2的功能,使其能够更好地...如果你正在使用Struts2开发项目,尤其是涉及到大量AJAX交互,那么了解并掌握JSONPlugin的使用是十分必要的。
jsonplugin-0.32.jar jsonplugin.jar包
java structs jsonplugin
在使用jsonplugin-0.32.jar时,开发者需要将其添加到项目类路径中,然后在Struts2的配置文件(struts.xml或struts-plugin.xml)中进行相应的配置。例如,可以添加一个全局结果类型,让所有Action都能返回JSON: ```...
总之,JsonPlugin 是一个方便开发人员处理 JSON 数据的工具,它提供了一套非静态类函数接口,便于在蓝图系统中使用,并且通过集成库的方式确保了打包后的可移植性。对于游戏开发和需要处理 JSON 数据的项目来说,这...
JSONPlugin插件是针对Struts2.1.8框架的一个扩展,主要目的是为了方便地将Java对象转换为JSON(JavaScript Object Notation)格式的数据,以便与ExtJS这样的前端JavaScript库进行交互。在Web开发中,JSON作为一种轻...
jsonplugin-0.31.jar 使用JSON的一个架包.
在使用JSONPLUGIN之前,你需要在Struts2的配置文件(如struts.xml)中添加对应的插件配置,以启用JSON支持。这通常包括导入插件的依赖,并声明全局结果类型。 2. **Action的JSON结果**: 在Action类中,你可以...
例如,`<interceptor-ref name="defaultStack">`表明JSONPlugin使用了默认的拦截器栈,并可能在其中添加或调整了特定的拦截器来处理JSON相关的逻辑。 再来看看`com`目录。这通常包含了源代码的包结构。在这个源码包...
struts2后台直接返回json对象,ajax开发必备
在提供的文档《Struts2_Jsonplugin_详解.doc》和《JsonPlugin 使用.docx》中,你应该能找到更具体的使用示例和详细配置信息。这些文档可能涵盖了如何处理集合类型、自定义类型转换器、错误处理以及与其他Struts2功能...
1268047053905-integrated.jnlp jsonplugin-0.32.jar
第一次上传,要5分,是物有所值,处理了jsonplugin 的no session的问题,并且添加了,新的注释,例如 @JSON(exclude='对象的名称') 就可以剔除 解决json与Hibernate之间的大部分问题 1.数据只取三层 2.对one-ton-many ,...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言(包括C、C++、C#、Java、JavaScript等)的习惯,使得这些语言的程序员可以很容易地...
以下是关于JSONPlugin的一些关键知识点: 1. **安装与配置**:JSONPlugin的使用需要先将其对应的JAR文件(如jsonplugin-0.32(struts2.0.0).jar和jsonplugin-0.34(struts2.1.6).jar)添加到项目的类路径中。接着,在...
JSONplugin+json.jar是针对JSON处理的一个插件,通常包含了一些方便开发者处理JSON数据的工具和类库。 在Java开发环境中,当我们需要处理JSON数据时,通常会引入像json.jar这样的第三方库。这个jar包可能包含了如下...
commons-beanutils-1.8.0 commons-collections-3.2 commons-lang-2.4 commons-logging-1.1 ezmorph-1.0.6 json-lib-2.3-jdk15 jsonplugin-0.34
在这个场景中,我们关注的是`jsonplugin-0.33.jar`,这是一个用于Struts2的插件,专门处理JSON(JavaScript Object Notation)数据格式的交互。 JSON是网络上数据交换的一种轻量级格式,因其简洁和高效而被广泛采用...
在Java中,使用`json-lib`和`jsonplugin`进行AJAX(Asynchronous JavaScript and XML)开发时,AJAX技术允许Web页面无需刷新即可与服务器交换数据并更新部分网页内容。这通常是通过XMLHttpRequest对象实现的,而JSON...