java手动拼接Ext组件json数据的简单方法
来源:互联网 发布:js prototype 属性 编辑:程序博客网 时间:2024/05/17 08:08
Ext的很多组件如grid, comboBox, tree等都有自己json数据格式, 一般我们需要在后台把数据库的数据进行拼接返回给前端。 以前我一直使用的是json-lib这个库,进行java object的json格式化的; 也有过一段时间是自己手动拼接json的。 这个2个办法在用过多次之后都有些不方便的地方:
使用json-lib:
- 这个库可以把对象,数组相应的转换成json格式。例如grid来说,我一般直接把实体对象转换成数组,以后还要拼接一下grid需要的一些数据。或者自己手动写个类型就是是grid对象的json格式,生成对象后直接转换也可以。
- 可是有时候,没必要传送那么多数据回去,一行表的字段也许仅仅需要几个而已。
- 遇到外键字段,json-lib就是不知道怎么转化了。所以这样就要自定义一个类去封装。
手动拼接:
- 有时候我还喜欢这么搞,简单明了的。但对于数据比较多,或是大量使用情况。就会纠缠在无数的StringBuilder的append中间。大量的"'"符号,不同字段的get方法,“,”的处理让人很抓狂,也很重复很无聊。
下面我总结了一个比较简单的手动拼接的方法,以ext grid为例子。
这是一个grid的接受数据的标准格式, 可以看到有些东西是固有的,比如都是{}, result, rows, [], {}这样的。后台拼接的时候,真正动态的就是rows里面的每一行,列名和列数据,如 id 和 1这样的。其它的都是固定的格式。我的这个方法的核心就是,变与不变的分离。不变的是固定的格式,什么时候[], 什么时候{} 等等; 变化就是存放在实体对象中的属性名和属性值。
一步步来,首先,我们需要一个接口,它的职责就是实现一个方法可以返回变化的数据。变化的数据我们可以看出来,是k-v的形式,属性值和属性名。属性名永远是string类型,值则是任意的。看接口定义如下:
这个接口我是定义在action基础类里的,所以是static的当然可以不这么做。这个接口只有一个方法,他有一个参数就是需要提取变化数据的对象,就是实体对象,这里是泛型的因为实体对象类型运行时确定。 返回值是一个Object数组,我没有用map类型数据格式来存放k-v。而是约定,这个数组每2项为一个整体存放k和v。为什么是Object因为刚才说了,实体对像的属性值是任何的可能类型,所以统一看成老祖宗类型。
接下来,需要一个方法来提取实体对象中的可变数据,如下:
因为Grid中的可变数据就是rows里的东西,所以可变json数据只是grid json整体的一部分,这个方法里的sb就是整体的json, 传入到这个方法表明需要完成整理中,rows里可变数据的部分。 entityList就是rows里的数据行, 每一行的数据如何拼接呢? 这就以来刚才定义的那个接口。property所引用的是一个实现了接口方法的对象。 方法调用中,我们看到我给接口方法传进去了Object, 而方法为我们返回 k-v形式的可变数据,我们进行json格式的拼装。
再往后呢,我们来看看grid 整体json是如何构建的:
这个方法构建了grid的整体json, 方法中体用了getObjectJson去构建可变数据部分。 property依然是作为参数传递进来的。 由此可见这个接口是让使用者自己实现的。 因为一个对象那些属性需要拼接成json是需要具体对待的。
最后我们看看如何使用这些:
这是一个重载了getGridJson的方法,参数是一个page对象, 分页对象是从数据库查询出来的。 page对象可以获得数据的总行数,和实体对象列表,这正是原getGridJson说需要的。 那么剩下一个IProperty接口,我们就地new了一个匿名类,实现了唯一的一个方法。由于是泛型的类型,我们在实现方法中拿到了具体的类型,这样我们就地new了一个Objcet数组直接初始化了。 数据就如同前面约定的,一个值是属性名,一个值是属性值。
在action中得到page对象后,直接调用这个方法就可以得到grid json了。实体对象需要的属性,由具体重载的getGridJson去定制,这样如果是外键对象也可以根据需要get出具体的属性k-v。
- java手动拼接Ext组件json数据的简单方法
- java后台返回前端数据的方式json,html 组装json的技术struts2-json-plugin,fast-json,Gson,手动拼接
- json手动拼接
- 简单的Ext自定义组件
- 拼接json数据2种方法
- 手动字符串拼接成JSON
- 解决EXT中Grid等组件读取Json数据的Date数据问题
- 前台拼接json数据java后台接收
- java解析和拼接json数据
- Jquery UI Tree组件的json格式,java递归拼接demo
- 简单直接的方法解析JSON数据
- 购物车中拼接的json数据
- Java 手动解析Json数据小记
- 简单json格式拼接
- json在js里面的拼接方法
- json拼接一种方法
- java 拼接复杂的json字符串
- java中json字符串的拼接
- 在海思3515芯片移植qt-embedded(一)---编绎和移植
- 调查Adobe Elearning Suite
- 在海思3515芯片移植qt-embedded(二)----hello world
- java 调试好方法
- 对数据加密
- java手动拼接Ext组件json数据的简单方法
- 对数据加密
- 布尔操作符
- SSAS建立父子维度
- 监听浏览器关闭事件
- ubuntu共享文件夹时发生错误“执行子进程“testparm”失败”
- 真正的用window.open()代替window.showModalDialog()
- commandargument 传多个值
- TCP的头文件代码解释(中文)