在JQuery、Extjs等js框架流行时,JSON数据拼装的简化一直是个问题,在实际业务中,每一个action的function可能需要的JSON都不相同。
StringBuffer拼写JSON再write出去本来是最灵活的,但是拼写的时候一是难于检查拼写正确性,二是难于维护,所以绝对不能考虑,否则会被后期维护会烦死。领域模型太过于死板,只能写一种业务的JSON。
借鉴扩展Struts2-json-plugin,可以在Action的方法上增加annotation方式来反射拼写JSON,这样就可以将组装JSON的工作拆分出来,放到通用方法中。实际测试中虽然反射很慢,但是性能问题可以忽略不计,因为浏览器对JSON数据的解析有性能限制,一次不会解析太多数据。
在原有@JSON标签基础上,增加了 JSONProperty[] 属性
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface JSON { String name() default ""; boolean serialize() default true; boolean deserialize() default true; String format() default ""; JSONProperty[] properties() default {}; } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface JSONProperty { String root() default ""; String clazz() default ""; JSONType type() default JSONType.list; String[] property() default {}; }
JSONType根据拼写规则不同,分为list,lazyTree,eagerTree,lazyTreeGrid,eagerTreeGrid,checkEagerTree,checkLazyTree,comboList几种,使用效果如下
private List<Councils> list; /** ** 解析Action中的属性——list,并解析list中的对象中的id、name、created以及Councils关联对象 manageOrganization的id、name属性,Councils关联对象 manageUser的id、name属性 **/ @JSON(properties = @JSONProperty(root = "list", property = { "id", "name", "created", "manageOrganization.id", "manageOrganization.name","manageUser.id","manageUser.name" })) public String list() { return super.list(); }
在实际使用过程中碰到很多问题,但是达到预期效果
相关推荐
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
struts2-json-plugin,Struts JSON插件
`struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
学习`struts2-json-plugin`的源码可以帮助开发者了解Struts2如何处理JSON数据,如何进行自定义扩展,以及如何优化JSON相关的性能。同时,对于理解MVC框架的工作流程和JSON在网络应用中的应用也有很大帮助。深入研究...
在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件(通常为struts.xml)中启用JSON插件。在Action类中,定义返回JSON数据的...
struts2自带的json转换 倒入jar文件 struts.xml中 <package ......extends="json-default" <result type="json"/>
struts2-json-plugin-2.2.3.1能用的包
struts2-json-plugin-2.3.15.1 -Lee修复bug版.jarstruts2-json-plugin-2.3.15.1 -Lee修复bug版.jarstruts2-json-plugin-2.3.15.1 -Lee修复bug版.jarstruts2-json-plugin-2.3.15.1 -Lee修复bug版.jar
ajax结合Struts2要用到的jar包
这个压缩包包含了两个关键的组件:json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar,它们是Struts2支持JSON(JavaScript Object Notation)序列化和反序列化的关键。 1. **json-lib-2.1.jar**: JSON是一种轻...
struts2 2.3.16.3 版本配置json所需要的jar文件。有时候版本不一致也会配置失败。
Struts2 JSON Plugin是Apache Struts框架的一个扩展插件,主要功能是支持Struts2应用程序与JSON(JavaScript Object Notation)格式的数据进行交互。JSON是一种轻量级的数据交换格式,广泛用于Web服务和AJAX...
struts2-json-plugin-2.3.24.jar
标题"struts2-json-plugin-2.1.8.1.jar"表明这是Struts2 JSON插件的一个特定版本,2.1.8.1。在软件开发中,版本号的更新通常意味着修复了已知的错误,增加了新的特性,或者提高了性能。 "JsonPlugin.tld"是Tag ...
struts2-struts1-plugin-2.1.6.jar
struts2-json-plugin-2.3.28.1.
首先,我们来看`struts-json-plugin-2.1.8.jar`,这是Struts2的JSON插件,它允许Struts2的动作类直接返回JSON格式的数据,方便前端进行Ajax请求处理。该插件在2.1.8版本中修复了若干bug,并提供了对JSON输出的支持。...