自己封装的json工具类
- package com.develop.util;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import net.sf.ezmorph.object.DateMorpher;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import net.sf.json.JSONSerializer;
- import net.sf.json.JsonConfig;
- import net.sf.json.util.CycleDetectionStrategy;
- import net.sf.json.util.JSONUtils;
- import net.sf.json.util.PropertyFilter;
- public class JsonUtil {
- /**
- * 转成jsonOjbect对象
- * @param obj
- * @return
- */
- public static JSONObject toJsonOjbect(Object obj){
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);//可防止hibernate模式下的关联关系子对象中包含父对象造成死循环
- JSONObject jsonObject = JSONObject.fromObject(obj,jsonConfig);
- return jsonObject;
- }
- /**
- * 转成jsonArray对象
- * @param obj
- * @return
- */
- public static JSONArray toJsonArray(Object obj){
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);//可防止hibernate模式下的关联关系子对象中包含父对象造成死循环
- JSONArray jsonArray = JSONArray.fromObject(obj,jsonConfig);
- return jsonArray;
- }
- /**
- * json串或jsonobject对象转成Map
- * @param obj
- * @return
- */
- public static Map<?, ?> jsonToMap(Object obj){
- JSONObject jsonObject = null;
- if(obj instanceof JSONObject){
- jsonObject = (JSONObject)obj;
- }else{
- jsonObject = JSONObject.fromObject(obj);
- }
- Map<Object, Object> map = new HashMap<Object, Object>(jsonObject.size());
- Iterator<?> it = jsonObject.keys();
- while(it.hasNext()){
- Object key = it.next();
- Object value = jsonObject.get(key);
- if(value instanceof JSONObject){
- map.put(key, jsonToMap(value));
- }else if(value instanceof JSONArray){
- map.put(key, jsonArrToList(value));
- }else{
- map.put(key, value);
- }
- }
- return map;
- }
- /**
- * list串或jsonArray对象转成list
- * @param obj
- * @return
- */
- public static List<?> jsonArrToList(Object obj){
- JSONArray jsonArray = null;
- if(obj instanceof JSONArray){
- jsonArray = (JSONArray)obj;
- }else{
- jsonArray = JSONArray.fromObject(obj);
- }
- List list = new ArrayList(jsonArray.size());
- Iterator<?> it = jsonArray.iterator();
- while(it.hasNext()){
- Object next = it.next();
- if(next instanceof JSONObject){
- list.add(jsonToMap(next));
- }else if(next instanceof JSONArray){
- list.add(jsonArrToList(next));
- }else{
- list.add(next);
- }
- }
- return list;
- }
- /**
- * json串转java对象
- * @param jsonStr json串
- * @param rootClass 要转成的主对象
- * @param subClassMap 主对象中包含的list类型的属性Map 格式:subClassMap.put("iordersegments", IorderSegment.class); key是子对象在主对象中的属性名, value是子对象类型
- * @return
- */
- public static <T>T jsonToBean(String jsonStr,Class<T> rootClass,Map<String, Class> subClassMap){
- JsonConfig filterNullConfig = new JsonConfig();
- //过滤掉参数值为null的参数,防止后边的时间转换出错
- filterNullConfig.setJsonPropertyFilter(new PropertyFilter() {
- @Override
- public boolean apply(Object clazz, String name, Object value) {
- boolean isFilter = false;
- if(value==null||"".equals(value)){
- isFilter = true;
- }
- return isFilter;
- }
- });
- JSONObject jsonObject = JSONObject.fromObject(jsonStr,filterNullConfig);
- String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd","yyyy-MM-dd HH:mm"};//不过好像只有 yyyy-MM-dd HH:mm:ss 格式有效
- JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.setRootClass(rootClass);
- if(subClassMap!=null&&subClassMap.size()>0){
- jsonConfig.setClassMap(subClassMap);
- }
- return (T)JSONSerializer.toJava(jsonObject, jsonConfig);
- }
- }
自己封装的json工具类的更多相关文章
- 用jackson封装的JSON工具类
package hjp.smart4j.framework.util; import com.fasterxml.jackson.databind.ObjectMapper; import org.s ...
- Spring统一返回Json工具类,带分页信息
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...
- HttpClientUntils工具类的使用测试及注意事项(包括我改进的工具类和Controller端的注意事项【附 Json 工具类】)
HttpClient工具类(我改过): package com.taotao.httpclient; import java.io.IOException; import java.net.URI; ...
- 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫
前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...
- springboot封装JsonUtil,CookieUtil工具类
springboot封装JsonUtil,CookieUtil工具类 yls 2019-9-23 JsonUtil public class JsonUtil { private static Obj ...
- 从接口自动化测试框架设计到开发(二)操作json文件、重构json工具类
用例模板里的请求数据多,看起来很乱,所以可以通过访问另外一个文件的方式获取请求数据 把请求数据都放在一个json文件中 取出login的内容: import json fp = open('G:/un ...
- Code片段 : .properties属性文件操作工具类 & JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...
- Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加
package com.aherp.framework.util; import java.lang.reflect.Array;import java.lang.reflect.Method;imp ...
- Json工具类 - JsonUtils.java
Json工具类,提供Json与对象之间的转换. 源码如下:(点击下载 - JsonUtils.java . gson-2.2.4.jar ) import java.lang.reflect.Type ...
随机推荐
- phpmyadmin任意文件包含漏洞分析(含演示)
0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...
- Hibernate的基本查询语句
1.最简单的查询 List<Special> specials = (List<Special>)session.createQuery("select spe fr ...
- [转]nls_lang设置
1. NLS_LANG 参数组成NLS_LANG参数由以下部分组成:NLS_LANG=<Language>_<Territory>.<Clients Characters ...
- 使用JDBC批量保存数据(JdbcDaoSupport,JdbcTemplete)
最近做的一个项目中用到了Hibernate的,然后数据库批量插入数据的时候就使用到了hibernate的批处理,但是效率比较低,看网上说还有一些限制,要禁止二级缓存,还要多一个batch_size的配 ...
- css 字体超出隐藏
height: 55px white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
- java类集框架图(google找的,备个份)
- javaBean Request生命周期
request: 在request范围内,JavaBean对象的有效范围为: ① 客户请求访问的当前JSP页面② 和当前JSP页面共享同一个请求的页面,包括<%@ include%>指令以 ...
- html5 调用摄像头
---移动设备--- <input type="file" capture="camera" accept="image/*" id= ...
- Android课程---Android设置透明效果的三种方法(转)
1.使用Android系统自带的透明效果资源 <Button android:background="@android:color/transparent"/> ...
- Android课程---帧布局 FrameLayout
帧布局的特点是: 1.多个组件,层叠显示 2.所占位置和大小由组件决定 示例代码: <?xml version="1.0" encoding="utf-8" ...