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 ...
随机推荐
- SQLHelper、DBUtil终极封装
DBUtil.java package org.guangsoft.util; import java.io.InputStream; import java.sql.Connection; impo ...
- July 25th, Week 31st Monday, 2016
We will not go quietly into the night. 今夜,我们将奋战到底. We will be the champion. We will not stop fightin ...
- 使用webstorm操作git
0. 前言 在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git. 对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于 ...
- javascript中json解密
一直以前都会断断续续会碰到js中的json数据的解析,下面凭着自己的经验,简单的讲解一下在js中的json的几种解析方法. 一.jquery的方式 首先你得先得到数据,一般都是jquery的ajax ...
- free(): invalid next size (fast/normal)问题
本文转自 http://blog.sina.com.cn/s/blog_77f1e27f01019qq9.html ,在此感谢! c++编译常会出现free(): invalid next size ...
- BaseActivity与BaseFragment的封装
这篇博客主要是从BaseActivity与BaseFragment的封装开始,总结我们在实战开发中关于Fragment的注意事项以及心得体会. 先看以下效果图: 这里模拟的是用户登录模块,你可能会说, ...
- UML状态图和活动图
UML状态图和活动图 统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对 ...
- php 克隆和引用类
/*class Ren { public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this-> ...
- error: Refusing to undefine while domain managed save image exists
[root@ok libvirt]# virsh undefine win7 error: Refusing to undefine while domain managed save image e ...
- .NET生成word文档服务器配置常见问题
注意:安装office2003的时候一定要选择 "完全安装" 而不是 "典型安装" 错误:System.Runtime.InteropServices.COME ...