- 浏览: 272653 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhuzhuhenzhencheng:
密码是什么啊
Ext表格(Grid)上面的悬浮提示 -
鹿惊_:
确实如雪中送炭般温暖!
Ext扩展整理后吐血奉献 -
ortega1_2_3:
该版本貌似有bug,当sockIOPool的自平衡线程self ...
Java MemCached Window简单实现 -
q6952592:
好。解决了我的兼容模式下出现的问题。
Ext表格(Grid)上面的悬浮提示 -
fei33423:
请参考 fei33423的文章 java中直接调用groovy ...
Groovy应用(Java与Groovy间相互调用)
将ExtJS Grid 中的record逐一转化为Bean,实现批量的添加或者修改
package com.hwasun.utils; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import org.junit.Test; /** * 将Ext中Store的data数据转化为Java中的List * @author JLee v .10 * @since 2011-2-25 * @function 主要是为了ext中可编辑的grid实现批量添加与修改 * 将注解的地方放开可以测试一下 */ public class Json2List { @Test //将Store中的data(即:多个record)转化为多个bean public Object JSON4Hibernate(Class clazz ,String json)throws Exception{ System.out.println("将要解析的JSON串"+json); List list = new ArrayList(); JSONObject jsonObjSplit = JSONObject.fromObject(json); JSONArray ja = jsonObjSplit.getJSONArray("data"); for (int i = 0; i < ja.size(); i++) { Object bean = clazz.newInstance() ; Class c = bean.getClass() ; Field[] fs = c.getDeclaredFields(); JSONObject jsonObject = (JSONObject) ja.get(i); for (Iterator iter = jsonObject.keys(); iter.hasNext();) { String key = (String) iter.next(); String value = jsonObject.getString(key); //为了父类赋值 适应继承 过来的ID if("id".equals(key)){ modifyId(bean,"id",value) ; } //为自己的实体每个属性赋值 for (Field f : fs) { if(f.getName().equals(key)){ Object vType = convertValueType(bean,f ,value); mf1(bean,f.getName(),vType); } } } list.add(bean) ; } return list ; } //对bean的属性进行判断,然后将JSON中的值转化为对应的类型 public Object convertValueType(Object o,Field f, String value) throws Exception { Object ov = null ; String fieldTypeName = f.getType().getName(); if (fieldTypeName.equals("int")||fieldTypeName.equals("java.lang.Integer")) { ov = value!=null&&value!="null"&&!"".equals(value)?Integer.parseInt(value):null ; } else if (fieldTypeName.equals("long")||fieldTypeName.equals("java.lang.Long")) { ov = value!=null&&value!="null"&&!"".equals(value)?Long.parseLong(value):null ; } else if (fieldTypeName.equals("float")||fieldTypeName.equals("java.lang.Float")) { ov = value!=null&&value!="null"&&!"".equals(value)?Float.parseFloat(value):null ; } else if (fieldTypeName.equals("double")||fieldTypeName.equals("java.lang.Double")) { ov = value!=null&&value!="null"&&!"".equals(value)?Double.parseDouble(value):null ; } else if (fieldTypeName.equals("boolean")||fieldTypeName.equals("java.lang.Boolean")) { ov = value!=null&&value!="null"&&!"".equals(value)?Boolean.parseBoolean(value):null ; } else if (fieldTypeName.equals("java.util.Date")) { if(value.length()>11){ ov = value!=null&&value!="null"&&!"".equals(value)?new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value):null ; }else{ ov = value!=null&&value!="null"&&!"".equals(value)?new SimpleDateFormat("yyyy-MM-dd").parse(value):null ; } } else if (fieldTypeName.equals("java.lang.String")) { ov = (String)value ; } else if (fieldTypeName.equals("java.lang.Object")) { ov = (Object)value ; } else { Field oField = o.getClass().getDeclaredField(f.getName()); if (oField != null) { oField.setAccessible(true); Object entity = oField.get(o); if (entity == null) { entity = oField.getType().newInstance(); } ov = json2Object(value ,entity); } } return ov ; } //将{name:"jlee",sex:"male",age:18,job:"student"}json格式付给bean中对应的Object属性 public Object json2Object(String json ,Object entity)throws Exception{ Class c = entity.getClass(); Field[] fs = c.getDeclaredFields(); if("[".equals(json.substring(0, 1))){ json = json.substring(1) ; } if("]".equals(json.substring(json.length()-1))){ json = json.substring(0,json.length()-1) ; } JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(json); for (Iterator iter = jsonObject.keys(); iter.hasNext();) { String key = (String)iter.next(); String value = jsonObject .getString(key) ; //为了父类赋值 适应继承 过来的ID if("id".equals(key)){ modifyId(entity,"id",value) ; } for (Field f : fs) { if(f.getName().equals(key)){ Object vType = convertValueType(entity,f ,value); mf1(entity,f.getName(),vType); } } } return entity ; } //修改bean的属性值 public void mf1(Object o , String fieldName ,Object newValue)throws Exception { Class c = o.getClass() ; Field f = c.getDeclaredField(fieldName); f.setAccessible(true); f.set(o, newValue); } //修改父类的 ID 值 public void modifyId(Object bean ,String fieldName ,String value) throws Exception{ Class c = bean.getClass().getSuperclass() ; Field[] array = c.getDeclaredFields() ; for(Field _f : array){ if(_f.getName().equals(fieldName)){ Field f = c.getDeclaredField(fieldName); Object vType = convertValueType(bean,f ,value); f.setAccessible(true); f.set(bean, vType); } } } public static void main(String[] args)throws Exception { String json = "{data:[" + "{id:'',name:'Lily',amount:'100',num:'12.3',isRight:'true',myTest:{id:'1',name:'test1',myTest:{id:'32'}}}," + "{id:'4',name:'Jim',amount:'200',num:'12.4',isRight:'false',myTest:{id:'2',name:'test2',myTest:{id:'3'}}}" + "]}"; Json2List mj = new Json2List(); Object list = mj.JSON4Hibernate(MyBean.class,json); for(MyBean mb : (List<MyBean>)list){ System.out.println("解析之后的Bean:"+mb.toString()); } } } class MyBean { private Integer id ; private String name ; private Long amount ; private boolean isRight ; private double num ; private MyTest myTest ; public MyTest getMyTest() { return myTest; } public void setMyTest(MyTest myTest) { this.myTest = myTest; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getAmount() { return amount; } public void setAmount(Long amount) { this.amount = amount; } public boolean getIsRight() { return isRight; } public void setIsRight(boolean isRight) { this.isRight = isRight; } public double getNum() { return num; } public void setNum(double num) { this.num = num; } @Override public String toString() { return "bean的值 { id:"+this.getId()+" name:"+this.getName() +" num:"+this.getNum()+" amount:"+this.getAmount() + " isRight:" + this.getIsRight()+ " myTest:"+this.getMyTest().toString()+" }"; } } class MyTest { private int id ; private String name ; private MyTest myTest ; public MyTest getMyTest() { return myTest; } public void setMyTest(MyTest myTest) { this.myTest = myTest; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "{id:"+this.getId()+","+"name:"+this.getName()+" myTest:{ id:"+this.getMyTest().getId()+"}"+" }"; } }
运行结果:
将要解析的JSON串{data:[{id:'',name:'Lily',amount:'100',num:'12.3',isRight:'true',myTest:{id:'1',name:'test1',myTest:{id:'32'}}},{id:'4',name:'Jim',amount:'200',num:'12.4',isRight:'false',myTest:{id:'2',name:'test2',myTest:{id:'3'}}}]}
解析之后的Bean:bean的值 { id:null name:Lily num:12.3 amount:100 isRight:true myTest:{id:1,name:test1 myTest:{ id:32} } }
解析之后的Bean:bean的值 { id:4 name:Jim num:12.4 amount:200 isRight:false myTest:{id:2,name:test2 myTest:{ id:3} } }
发表评论
-
JSON查看工具
2012-03-09 22:26 0Eclipse 的json插件: 这款插件主要功能是把jso ... -
gzip压缩JavaScript
2012-02-13 17:14 5691为了提高客户端的体验效果,RIA开发逐渐兴起。这样 ... -
Ext扩展整理后吐血奉献
2012-01-19 13:58 7111对 Ext 扩展的一些小总结 1、multicombo (多 ... -
JSON LIB转化时间
2011-11-02 09:32 1324Ext Grid显示Json lib 转化时间为object的 ... -
JS计算日期差
2011-09-24 14:04 1547function Computation(sDate1,sDa ... -
将Air文件转换为EXE进行部署
2011-06-14 17:21 1683如果你的air sdk还没有升级到2.0 那显然是不行的. ... -
禁止IE的backspace键(退格键),但输入文本框时不禁止
2011-06-09 09:59 3655Ext实现方式: Ext.getDoc().on('keyd ... -
Ext中集成在线编辑器Ext.ux.TinyMCE
2011-05-31 15:46 3061Ext.ux.TinyMCE第三方对Ext 在线编辑器的扩展, ... -
Ex的Ajax请求实现同步
2011-05-31 15:29 1326Ext2,.x的Ajax实现同步 Ext.lib.Ajax. ... -
JS实现将XML转化为JSON
2011-05-31 15:09 5548直接上代码 xmlToJson={ parser: ... -
Ext表格(Grid)上面的悬浮提示
2011-05-30 16:36 7531方法一 使用render //鼠标放在Grid上面显示提示 ... -
开发者最容易犯的13个JavaScript错误
2011-04-25 10:28 6921.for.. 数组迭代的用法 U ... -
Ext皮肤切换
2011-04-22 10:46 3315/** * @author JLee * @since ... -
JS获取屏幕大小
2011-04-18 16:56 1216<html> <script> f ... -
在js中对中文和特殊字符转码
2011-04-14 14:21 3909直接上代码 js对文字进行编码涉及3个函数:escape,e ... -
Aptana 构建 Air 项目(集成ExtJS)
2011-03-17 01:00 34321、安装Aptana IDE ... -
XTemplate
2011-03-16 14:07 4532Ext XTemplate的应用: template. ... -
读取Properties文件中的内容填充本地combo
2011-03-10 16:24 1819首先定义一个properties文件放到classpath路径 ... -
汉字转换为拼音
2011-03-09 10:11 4557首先定义一个html页面: ... -
ExtJS中submit与Ajax的success
2010-11-12 23:10 7871Ajax中使用Success使用response接收后台传来的 ...
相关推荐
Ext grid中渲染进度条,超帅 源码-----下载不扣分,回帖加1分,欢迎下载,童叟无欺。Ext grid中渲染进度条,超帅 源码-----下载不扣分,回帖加1分,欢迎下载,童叟无欺。Ext grid中渲染进度条,超帅 源码-----下载不扣分...
extgrid 是一款jquery上的gird插件 界面风格采用了类似easyui extjs 界面风格样式 可通过css修改自己想要的样式 extgrid具有列大小 位置改变 排序 分组 分页 工具栏 扩展行 rowNumber 多选列 编辑列 行列锁 ajax...
Ext grid 动态添加字段、列扩展, 如何动态添加或者删除一个grid的列
Ext Grid表格的自动宽度及高度的实现
Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码
在Ext的grid里实现带radio单选功能的gridlist
支持Ext3 Ext4导出excel,客户端导出表格,支持各种主流浏览器。
找了半天,结果在extjs的老家找到一个前辈写的代码,可以在grid上面加上合计, <br>但是却只能合计grid里面的数据,但是我们平常一般是只显示20行或者30行,这样的合计就没有什么意义,我们的合计数据是单独从...
EXT GRID使用EXT GRID使用 EXT GRID使用EXT GRID使用
Ext grid panel 滚动条位置不变,适用于实时数据的刷新
本实例使用官方Ext3.1包 ...1.创建简单快捷的Ext Grid控件 代码清晰 2.Grid 读取 Xml 3.Grid 读取 json 4.Grid 读取 Excel 5.直接在 Grid 控件进行增删改查的操作 有任何疑问的同志欢迎提出即可谢谢
Grid实现中文排序的功能,重写Ext.data.Store的applySort函数
官方例子 Ext grid filter
NULL 博文链接:https://damen.iteye.com/blog/946039
用于Ext开发Grid中遇到的所锁列的问题,这个很有帮助
一个完整的ext中grid与tree的使用,是很好的一个学习例子.
EXT grid导出EXCEL,有事例,下载后直接可用
要实现Ext Grid的远程排序其实很简单,只要修改查询语句的排序关键字就可以了,但是,如果你的项目是使用Linq进行开发的,会发现动态修改排序关键字并不是那么容易的事,解决办法就是使用LINQ Dynamic Query Library...
Ext4 grid打印,打印预览,复杂表头打印,等等都实现了!
通过ext实现图片的批量上传,类似于qq的相册图片上传,界面美观,并且有java和。net两个不同的版本哦,还等什么,想要就赶快下载吧!