1.导入jsonplugin包
Struts2.16:导入jsonplugin-0.34.jar包(下载包)和commons-logging-1.0.4.jar(Struts2 lib下有)
Struts2.18导入struts2-json-plugin-2.1.8.1.jar(Struts2 lib下有)
2.struts.xml中package 中extends="json-default"
<package name="json" namespace="/json" extends="json-default">
3.result 中type="json"
<!-- 封装所以的get开头的方法 -->
<result type="json" name="user">
</result>
<!-- 只包含user.id属性 -->
<result type="json" name="user">
<param name="includeProperties">
user\.id
</param>
</result>
<!-- 不包含user属性 -->
<result type="json" name="list">
<param name="excludeProperties">
user
</param>
</result>
<!-- 根对象只包含user -->
<result type="json">
<param name="root">
user
</param>
</result>
<!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,如果不想这样做,需要在配置时指定 ignoreHierarchy 为 false: -->
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
4.避免使用get开头的action方法
在属性get方法上面加
@JSON(name="newName")json中的名称
@JSON(serialize=false) 属性不被加入json
@JSON(format="yyyy-MM-dd") 格式化日期
5.在action中赋值,返回对应的result字符串
转换成json时发生的错误:
No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: ***************_$$_javassist_15["hibernateLazyInitializer"])
后来google发现在je上有人有类似的问题:http://147175882.iteye.com/blog/380823
147175882 写道
分析原因,是因为jsonplugin用的是java的内审机制.hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin会把hibernateLazyInitializer也拿出来操作,并读取里面一个不能被反射操作的属性就产生了这个异常.
不过我用的是jackson来转json,所以想到了用annotation来排除hibernateLazyInitializer 这个属性
在你的pojo类声明加上:
Java代码
@JsonIgnoreProperties(value={"hibernateLazyInitializer"})
或者:
这个错其实很易明了,因为你序列化对象A时,需要把里面的多对一关系的B拿出来,而B里面又有A的集合,如此反复,便报这样的错了,解决这个问题的方法在于在 多对一关系中的的一方的set 集体的get 方法前面添加@JsonIgnore即可,如:
Java代码
@JsonIgnore public Set getStuedntses() {
return studentses;
}
添加这个注解后,无论你是lazy="true" or lazy="false"他都不会去序列化你的了!
positioned update not supported异常解决
该异常有两种解决方法:
第一:在struts.xml文件的配置中排除不要被JSON序列化的属性,例如:
Java代码
<action name="functions" class="getFunctionsAction" method="functions_getList">
<result type="json">
<param name="excludeProperties">functionsService</param>
</result>
</action>
其中functionsService就是不要被JSON序列化的属性。
第二:在Action文件中去除不要被JSON序列化的属性的get()方法,例如:
Java代码
public IFunctionsService getFunctionsService() {
return functionsService;
}
这样做functionsService同样不会被JSON序列化。
说明:
带有transient修饰符与没有Getter方法的字段(field)都不会被串行化为JSON。
分享到:
相关推荐
但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...
在本文中,我们将探讨两种在Struts2框架中返回JSON数据的方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端交互,尤其是在AJAX请求中。Struts2提供了一套方便的机制来支持JSON...
Struts2 返回 JSON 对象 Struts2 是一个基于 MVC 模式的 Java Web 应用程序框架,它提供了一个强大的机制来处理用户的请求和响应。在 Struts2 中,返回 JSON 对象是通过 JSON 插件来实现的,这个插件提供了一个可以...
本篇文章将详细讲解如何在Struts2中使用“json-default”拦截器来返回JSON数据。 首先,我们需要理解Struts2的拦截器(Interceptor)机制。拦截器是Struts2框架的核心组件之一,它们在Action执行前后执行特定的任务...
这篇博客"Struts2返回json -- demo"可能是关于如何在Struts2框架中实现JSON响应的教程。 在Struts2中,返回JSON数据主要依赖于`struts2-json-plugin`插件。首先,你需要确保在你的项目中已经添加了这个插件的依赖。...
关于Struts2返回JSON,这是现代Web应用中常见的需求,尤其是对于AJAX交互。Struts2提供了一个插件叫做“struts2-json-plugin”,它可以很方便地将Action的返回值转化为JSON格式,从而供前端JavaScript处理。要实现这...
在"struts2返回json格式的数据练习"这个实例中,我们将学习如何配置Struts2框架以支持JSON输出,并创建一个简单的示例来展示这一过程。 首先,我们需要在Struts2项目的`pom.xml`文件中添加JSON插件依赖。Struts2的...
Struts2返回JSON对象是一种常见的做法,特别是在构建Web应用程序时,需要与前端进行异步通信,比如实现Ajax功能。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...
Struts2提供了JSON插件,使得能够方便地从Action直接返回JSON对象,而无需额外的序列化处理。 首先,为了在Struts2中启用JSON支持,你需要引入特定的库。这些库包括`struts2-json-plugin-2.1.8.1.jar`,它是Struts2...
3. **配置Struts2 JSON支持**:在Struts2的配置文件(struts.xml或struts-default.xml)中,我们需要启用JSON插件,并定义一个或多个Action来返回JSON。例如: ```xml <constant name="struts.enable.SMD" value=...
### Struts2返回JSON对象详解 #### 一、前言 在Web开发中,前后端交互数据时,JSON格式的数据由于其简洁性和易读性,成为了一种非常流行的选择。Struts2作为Java Web开发中常用的框架之一,支持多种方式返回JSON...
在Struts2框架中,返回JSON对象是一种常见的数据传输方式,特别是在前后端分离的开发模式下。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。以下将...
在本场景中,我们将探讨如何在Struts2中返回JSON数据,并在页面上使用jQuery库的`$.ajax`或`$.getJSON`方法来接收和处理这些数据。 首先,我们需要在Struts2中配置JSON结果类型。在`struts.xml`配置文件中,添加一...
在实际开发中,为了测试Struts2返回JSON格式的数据,可以创建一个简单的Action,设置返回值,并在前端使用AJAX请求来接收这个JSON数据。例如,使用jQuery的$.ajax()方法进行请求,然后通过JSON.parse()解析返回的...
当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给前端。 接着,我们讨论AJAX。AJAX是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。在本资源中,...
ajaxfileupload.js(struts2返回json后,success接收不到,修改后的版本) strust2+ajaxfileupload,成功后的回调
这个插件允许开发者在Struts 2中轻松地创建能够返回JSON的Action,使得前端(通常使用JavaScript库如jQuery)可以获取到JSON数据并进行进一步处理。 现在我们来详细讨论这两个库在实际应用中的作用: 1. **json-...