`
beyond429
  • 浏览: 96140 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2返回JSON对象总结

阅读更多
Struts2返回JSON对象总结 (转)
转载自 日暮月垂

1.struts.xml中package 中extends="json-default"


<package name="json" namespace="/json" extends="json-default"> 
<package name="json" namespace="/json" extends="json-default">


2.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的JSON List列表,其中userInfosList是action中的一个List类型的属性,userInfosList \[\d+\]\. userName表示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)  
-->  
<result  name="success" type="json">  
<param name="includeProperties">  
    userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password  
</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>   
   
<!-- 封装所有的get开头的方法 --><result type="json" name="user"></result><!-- 只包含user.id属性 --><result type="json" name="user">    <param name="includeProperties">                       user\.id    </param></result><!-- 返回user的JSON List列表,其中userInfosList是action中的一个List类型的属性,userInfosList \[\d+\]\. userName表示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)--><result  name="success" type="json"><param name="includeProperties"> userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password</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>  


3.避免使用get开头的action方法
  在属性get方法上面加
  @JSON(name="newName")json中的名称
  @JSON(serialize=false) 该属性不被加入json
  @JSON(format="yyyy-MM-dd") 格式化日期

4.在action中赋值,返回对应的result字符串

说明:
为什么要用includeProperties或excludeProperties 参数:主要是为了过滤掉接口,pojo的set、list、其它对象等不需要的数据防止循环取其它关联对象或找不到接口。如果不配置,默认是处理action中的所有属性,如果action中有接口注入,json拦截器可能找不到接口而返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其它对象有list、set,其返回结果相当庞大,有可能是死循环而无法返回 。如果不用<param name="includeProperties">或其他方式进行json数据过滤,通过debug你会发现前台返回的json字符串,是把action中的所有属性全部转化成json字符串返回给客户端(包括service接口、pojo所有属性及有关联的pojo。有时候根本返回不了结果,也不报错,后台执行了,但前台执行不到callback function,这主要是因为找不到接口或者关联的pojo太多,造成死循环),一般情况下用的最多的就是root、includeProperties 和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。

Excluding properties
Xml代码 
<!-- 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> 

Including properties
Xml代码 
<!-- Result fragment --> 
<result type="json"> 
  <param name="includeProperties"> 
    ^entries\[\d+\]\.clientNumber, 
    ^entries\[\d+\]\.scheduleNumber, 
    ^entries\[\d+\]\.createUserId 
  </param> 
</result> 

对集合 listAttachment.*, listAttachment\[\d+\] 含义是不同的
listAttachment.*, 指listAttachment集合对象本身
listAttachment\[\d+\] 指listAttachment集合对象中的元素

总结:
action中避免使用get开头的action方法,去掉action中的接口的get方法。 为json类型的result配置includeProperties, excludeProperties等参数.

分享到:
评论

相关推荐

    Struts2返回JSON对象的方法总结完整实例

    但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。

    struts2返回JSON数据的两种方式

    总结,Struts2中返回JSON数据有两种主要方式:一是通过`response.getWriter().print()`手动输出JSON字符串;二是利用Struts2的内置JSON插件,通过返回特定的属性和结果类型自动处理JSON。每种方法都有其适用场景,...

    Struts2 返回json对象

    Struts2 返回 JSON 对象 Struts2 是一个基于 MVC 模式的 Java Web 应用程序框架,它提供了一个强大的机制来处理用户的请求和响应。在 Struts2 中,返回 JSON 对象是通过 JSON 插件来实现的,这个插件提供了一个可以...

    struts2返回json

    在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...

    Struts2返回JSON对象.doc

    在Struts2框架中,返回JSON对象是一种常见的数据传输方式,特别是在前后端分离的开发模式下。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。以下将...

    struts2+json

    当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给前端。 接着,我们讨论AJAX。AJAX是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。在本资源中,...

    Struts2返回JSON对象

    Struts2返回JSON对象是一种常见的做法,特别是在构建Web应用程序时,需要与前端进行异步通信,比如实现Ajax功能。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...

    Struts2返回JSON对象.docx

    总结来说,Struts2返回JSON对象涉及以下几个关键点: 1. 引入必要的库,包括Struts2的JSON插件和其他Apache Commons库。 2. 创建Action类,定义返回JSON数据的方法。 3. 配置Struts2 XML,指定Action的返回类型为...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    这个插件允许开发者在Struts 2中轻松地创建能够返回JSON的Action,使得前端(通常使用JavaScript库如jQuery)可以获取到JSON数据并进行进一步处理。 现在我们来详细讨论这两个库在实际应用中的作用: 1. **json-...

    ExtJs + Struts2 + JSON 程序总结

    通过Struts2处理后端逻辑并返回JSON数据,EXTJS能够动态地更新页面,呈现复杂的数据结构,从而提高用户体验。这种技术栈在现代企业级Web开发中非常常见,因为它能够简化数据交互,同时保持良好的性能和可维护性。

    struts2返回json数据的方法一 使用json-default

    本篇文章将详细讲解如何在Struts2中使用“json-default”拦截器来返回JSON数据。 首先,我们需要理解Struts2的拦截器(Interceptor)机制。拦截器是Struts2框架的核心组件之一,它们在Action执行前后执行特定的任务...

    struts2与json整合

    为了返回JSON数据,可以定义一个如下的Action方法: ```java public String getXxx() { return "aaa"; } ``` 当客户端调用此方法时,Struts2会自动将返回值 `"aaa"` 转换成JSON格式,即`{"xxx":"aaa"}`,发送回...

    struts2-json-plugin源码

    在执行过程中,它会遍历Action的属性,将它们转换成JSON对象,并写入到HTTP响应中。 3. **JSON插件配置**:在`struts-plugin.xml`配置文件中,会注册JSON插件,声明结果类型和其他相关设置,如启用GZIP压缩、排除...

    struts2使用json返回对象和列表(案例)

    在Struts2的配置文件(通常是struts.xml)中,需要为Action配置一个返回JSON结果的类型。例如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; ...

    struts2-json-plugin-2.3.8.jar

    该插件的核心作用在于,它扩展了Struts2框架,使得Action类可以直接返回JSON响应,而无需额外的代码处理。在Struts2中,你可以通过在Action类的方法上添加特定的注解,如`@Result(type = "json")`,来指示该方法应该...

    Struts2+Json+Android简单实现

    1. **服务端**:在Struts2的Action类中,定义一个方法处理请求,该方法可能需要访问数据库或其他业务逻辑,然后将结果转化为JSON对象。通过配置struts.xml,设定这个方法返回JSON类型的结果。 2. **客户端**:在...

    struts2-json

    Struts2提供了JSON插件,允许开发者在Action类中返回JSON响应。安装插件后,只需在Action配置中启用JSON支持,就能自动处理JSON输出。 2. **Action配置**: 在Struts2的配置文件(struts.xml或struts.properties)...

    Struts2+JSON_实现AJAX_返回对象和列表

    当用户发起AJAX请求,Struts2会调用这个Action,然后返回JSON化的`users`对象。 要实现返回结果列表,你可以在`UserAction`中添加一个列表属性,例如`List&lt;Users&gt;`,并填充数据。然后在返回的JSON中,这个列表会被...

    Struts2返回JSON对象[参考].pdf

    ### Struts2返回JSON对象详解 #### 一、前言 在Web开发中,前后端交互数据时,JSON格式的数据由于其简洁性和易读性,成为了一种非常流行的选择。Struts2作为Java Web开发中常用的框架之一,支持多种方式返回JSON...

Global site tag (gtag.js) - Google Analytics