Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加
|
import java.lang.reflect.Array; import org.json.JSONArray; /** *//** private static JSONUtil instance = null; static public String toJSONString(Object obj) throws JSONException...{ private String getJSONArray(Object arrayObj, boolean useClassConvert) throws JSONException...{ JSONStringObject getJSONObject(Object value, boolean useClassConvert) throws JSONException...{ //处理原始类型 if (value == null) ...{ Iterator iterator = ((Map)value).keySet().iterator(); //class if(value instanceof Class) if (value instanceof Collection || value.getClass().isArray()) ...{ return reflectObject(value, useClassConvert); private JSONStringObject reflectObject(Object bean, boolean useClassConvert)...{ Class klass = bean.getClass(); jSONObject.put(key, getJSONObject(elementObj, useClassConvert)); package com.aherp.framework.util; import org.json.JSONString; public class JSONStringObject implements JSONString ...{ private String jsonString = null; @Override public String toJSONString() ...{ 调用测试程序 import java.util.ArrayList; public class AObj ...{ public AObj()...{ import java.math.BigDecimal; public class BObj ...{ private HashMap innerhm = new HashMap(); public HashMap getInnerhm() ...{ public void setInnerhm(HashMap innerhm) ...{ public class CObj extends AObj...{ private Object[] oarray = new Object[]...{352, false, "kick"}; public Object[] getOarray() ...{ public void setOarray(Object[] oarray) ...{ import java.util.*; import org.json.JSONException; import com.aherp.framework.util.HiJSONUtil; public class Test ...{ 输出: 如果需要支持Hibernate,那么必须弄清其机制。Hibernate采用CGLIB对VO对象进行字节码增加,实际机制就是使用一个原类型的proxy子类,其子类实现了HibernateProxy接口。其接口有一个isUninitialized的判断方法,用来判断该代理类是否已经初始化(还记得在事务外使用延迟加载的对象会抛no Session的错误吗,正是由于实际使用的对象已经变成原来类的子类proxy了)。而对于one-to-many映射时,很难判断对象只加载一次,因此为了避免递归调用死循环,忽略了Hibernate的one-to-many集合的递归反射。其原理和many-to-one一样,也是一个子类化的proxy,具有PersistentSet的接口。 因此,支持Hibernate的JSONUtil如下: package com.aherp.framework.util; import org.hibernate.collection.PersistentSet; /**//** private static HiJSONUtil instance = null; static public String toJSONString(Object obj) throws JSONException...{ @Override } |
Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加的更多相关文章
- JSON工具类的构建(后端版本)
前言 在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端). 而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端). 优缺点 前后端耦 ...
- 用jackson封装的JSON工具类
package hjp.smart4j.framework.util; import com.fasterxml.jackson.databind.ObjectMapper; import org.s ...
- Code片段 : .properties属性文件操作工具类 & JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...
- Json工具类 - JsonUtils.java
Json工具类,提供Json与对象之间的转换. 源码如下:(点击下载 - JsonUtils.java . gson-2.2.4.jar ) import java.lang.reflect.Type ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Spring统一返回Json工具类,带分页信息
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...
- 强大的Java Json工具类
转自: https://blog.csdn.net/u014676619/article/details/49624165 import java.io.BufferedReader; import ...
- HttpClientUntils工具类的使用测试及注意事项(包括我改进的工具类和Controller端的注意事项【附 Json 工具类】)
HttpClient工具类(我改过): package com.taotao.httpclient; import java.io.IOException; import java.net.URI; ...
- json工具类(三)——net包
package com.ruoyi.common.utils.json; import java.util.List; import java.util.Map; import net.sf.json ...
随机推荐
- DOS下常用网络命令技巧
DOS,即使对于许多自称了解计算机的人而言,也是一个比较陌生的词汇.然而,在网络管理过程中,DOS命令却是一个不可逾越的障碍,几乎所有的网络命令都运行在DOS界面.对初级用户而言,掌握一些常用网络命令 ...
- sina发现并不会去导入qq使用的
看问题需要多角度,为之不能实现也是有可能没有完善的.确实是由于短时间发布过多,还是bky好点好像有30S
- Android悬浮窗注意事项
一 动画无法运行 有时候,我们对添加的悬浮窗口,做动画的时候,始终无法运行. 那么,这个时候,我们可以对要做动画的View,再添加一个parent,即容器.将要做动画的View放入容器中. 二 悬浮窗 ...
- lucene 搜索引擎使用案例
1.使用定时框架Quartz.Net创建索引库,引用类库文件有Common.Logging.dll.Lucene.Net.dll,PanGu.dll,PanGu.HighLight.dll,PanGu ...
- Emacs简易教程
Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...
- 小甲鱼PE详解之输入表(导入表)详解(PE详解07)
捷径并不是把弯路改直了,而是帮你把岔道堵上! 走得弯路跟成长的速度是成正比的!不要害怕走上弯路,弯路会让你懂得更多,最终还是会在终点交汇! 岔路会将你引入万劫不复的深渊,并越走越深…… 在开始讲解输入 ...
- 网站构建学习笔记(0)——基本概念了解及资源学习(copy自w3school)
一.学习方面 1.WWW - 万维网 什么是 WWW? WWW 指万维网(World Wide Web) 万维网常被称为Web Web 是由遍布全球的计算机所组成的网络 所有 Web 中的计算机都可以 ...
- hdu 5761 Rowe Bo 微分方程
1010 Rower Bo 首先这个题微分方程强解显然是可以的,但是可以发现如果设参比较巧妙就能得到很方便的做法. 先分解v_1v1, 设船到原点的距离是rr,容易列出方程 \frac{ dr} ...
- 参加 TiD 2015 是怎样一番体验?
人生有很多第一次,(专程打飞的去帝都)参加软件大会,我也是第一次. TiD 说到软件大会,QCon.PyCon 什么的早已如雷贯耳,没吃过猪肉还没见过猪跑?但对于 TiD,确实还是头一次听说. ...
- ember.js:使用笔记4 数组数据的分组显示
除了之前介绍的将数组数据在一个页面中输出的方法,还可以将数组数据分组,按照点击,在不同页面中分别显示,方法为: Model: 例如:Table Router: 设置一个父对象和子对象设置: this. ...