纯绿色 jsonUtil工具
package com.daditech.common.util;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.math.BigDecimal;import java.math.BigInteger;import java.sql.Date;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.lang.StringUtils;/**** 项目名称:drp <br/>* 类名称:JsonUtil <br/>* 类描述: <br/>* 创建人:ki_tom <br/>* 创建时间:2013-8-12 下午2:11:24 <br/>* 修改人:ao.ouyang <br/>* 修改时间:2014年10月1日11:25:24 <br/>* @version 1.2**/public class JsonUtil {public static final String SEP1 = ":";public static final String SEP11 = "=";public static final String SEP2 = ",";public static boolean isRemoveZeroList;public static String TimestampPattern = "yyyy-MM-dd HH:mm:ss";public static String DatePattern = "yyyy-MM-dd HH:mm:ss";public static boolean isCamelSpelling = true;/**** @Function string转化为map<String,String> <br/>* @param mapStr <br/>* @require <br/>* @return Map<String,String> <br/>* @Exception <br/>* @since version 1.0 <br/>* 创建人:ki_tom <br/>* 创建时间:2013-8-12 下午2:11:39 <br/>* 修改人:ao.ouyang <br/>* 修改时间:2014年10月1日11:27:00 <br/>*/public static Map<String,String> strToMap(String mapStr) {if (StringUtils.isEmpty(mapStr)) {return null;}mapStr = mapStr.substring(1,mapStr.length()-1).replaceAll("'", "").replace("\"", "");Map<String,String> map = new HashMap<String,String>();// 转换为数组String[] text = mapStr.split("\\" + SEP2);for (String str : text) {// 转换key与value的数组String[] keyText = str.split(str.indexOf(SEP1)!=-1?SEP1:SEP11);if (keyText.length <= 1) {continue;}String key = keyText[0]; // keyString value = keyText[1]; // valuemap.put(key.trim(), value.trim());}return map;}public static String toJson(Object obj){if(null!=obj){if(obj instanceof List){return toJson((List)obj);}else if(obj instanceof Object[]){return toJson((Object[])obj);}else{toJson(getAttributes(obj));}}return null;}public static String toJson(Map map){String result = "";map = removeListAttr(map);for(Iterator it = map.keySet().iterator(); it.hasNext();){String name = (String)it.next();Object value = map.get(name);if(value == null)result = (new StringBuilder()).append(result).append("\"").append(name).append("\":null,").toString();elseif(value instanceof Boolean){Boolean b = (Boolean)value;result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append(b.toString()).append(",").toString();} elseif((value instanceof Integer) || (value instanceof Long) || (value instanceof Float) || (value instanceof Double) || (value instanceof Short) || (value instanceof BigInteger) || (value instanceof BigDecimal))result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append(value.toString()).append(",").toString();elseif(value instanceof String){String v = (String)value;v = v.replaceAll("\\\\", "\\\\\\\\");v = v.replaceAll("\n", "\\\\n");v = v.replaceAll("\r", "\\\\r");v = v.replaceAll("\"", "\\\\\"");v = v.replaceAll("'", "\\\\'");result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append("\"").append(v).append("\",").toString();} elseif(value instanceof Date || value instanceof java.util.Date){SimpleDateFormat df = new SimpleDateFormat(DatePattern);String s = df.format(value);result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append("\"").append(s).append("\",").toString();} elseif(value instanceof Timestamp){SimpleDateFormat df = new SimpleDateFormat(TimestampPattern);Timestamp v = (Timestamp)value;String s = df.format(new java.util.Date(v.getTime()));result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append("\"").append(s).append("\",").toString();} elseif(value instanceof List){String v = toJson((List)value);result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append(v).append(",").toString();} elseif(value instanceof Map){Map attr = removeListAttr((Map)value);result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append(toJson(attr)).append(",").toString();} elseif(!value.getClass().getName().startsWith("java")){Map attr = getAttributes(value);attr = removeListAttr(attr);result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append(toJson(attr)).append(",").toString();} else{result = (new StringBuilder()).append(result).append("\"").append(name).append("\":").append("\"").append(value.toString()).append("\",").toString();}}if(result.length() == 0)return "{}";elsereturn (new StringBuilder()).append("{").append(result.substring(0, result.length() - 1)).append("}").toString();}public static String toJson(Object aa[]){if(aa.length == 0)return "[]";String result = "";Object arr$[] = aa;int len$ = arr$.length;for(int i$ = 0; i$ < len$; i$++){Object obj = arr$[i$];if(obj==null){result = (new StringBuilder()).append(result).append("null").append(",").toString();continue;}else if(obj instanceof Map){Map map = (Map)obj;map = removeListAttr(map);result = (new StringBuilder()).append(result).append(toJson(map)).append(",").toString();continue;}else if(obj instanceof List){List arr = (List)obj;result = (new StringBuilder()).append(result).append(toJson(arr)).append(",").toString();continue;}else if (obj instanceof Object[]) {Object[] arr = (Object[])obj;result = (new StringBuilder()).append(result).append(toJson(arr)).append(",").toString();continue;}else if(obj instanceof String){result = (new StringBuilder()).append(result).append("\"").append(String.valueOf(obj)).append("\",").toString();continue;}else {Map attr = getAttributes(obj);attr = removeListAttr(attr);result = (new StringBuilder()).append(result).append(toJson(attr)).append(",").toString();}}return (new StringBuilder()).append("[").append(result.substring(0, result.length() - 1)).append("]").toString();}public static String toJson(List ll){return ll==null? "[]":toJson(ll.toArray());}public static Map getAttributes(Object obj){Class c = obj.getClass();try{Method method = c.getMethod("isProxy", new Class[0]);Boolean result = (Boolean)method.invoke(obj, new Object[0]);if(result.booleanValue())c = c.getSuperclass();}catch(Exception e) { }Map attr = new HashMap();Field arr$[] = c.getFields();int len$ = arr$.length;for(int i$ = 0; i$ < len$; i$++){Field f = arr$[i$];try{Object value = f.get(obj);attr.put(f.getName(), value);}catch(Exception e) { }}Method [] arr$2 = c.getDeclaredMethods();len$ = arr$2.length;for(int i$ = 0; i$ < len$; i$++){Method m = arr$2[i$];String mname = m.getName();if(mname.equals("getClass"))continue;String pname;if(mname.startsWith("get")){pname = mname.substring(3);if(pname.length() == 1)pname = isCamelSpelling?pname.toLowerCase():pname;elsepname = isCamelSpelling?(new StringBuilder()).append(pname.substring(0, 1).toLowerCase()).append(pname.substring(1)).toString():pname;try{Object value = m.invoke(obj, new Object[0]);attr.put(pname, value);}catch(Exception e) { }continue;}if(!mname.startsWith("is"))continue;pname = mname.substring(2);if(pname.length() == 1)pname = pname.toLowerCase();elsepname = (new StringBuilder()).append(pname.substring(0, 1).toLowerCase()).append(pname.substring(1)).toString();try{Object value = m.invoke(obj, new Object[0]);attr.put(pname, value);}catch(Exception e) { }}return attr;}private static Map removeListAttr(Map map){Map newMap = new HashMap();Iterator i$ = map.entrySet().iterator();do{if(!i$.hasNext())break;Object enObj = i$.next();java.util.Map.Entry en = (java.util.Map.Entry)enObj;if(isRemoveZeroList&&en.getValue() instanceof List &&((List)en.getValue()).size()==0)continue;elsenewMap.put((String)en.getKey(), en.getValue());} while(true);return newMap;}}
纯绿色 jsonUtil工具的更多相关文章
- [Windows] - Windows/Office纯绿色一键激活工具及方法
瘟到死网上有很多一件键激活工具(如KMS),但许多带毒或报毒.这里给出一个纯绿色命令行一键激活,及自已搭建激活服务器的方法. KMS现在算法都是公开的了,可以自行在网上找到,这里不详述. 使用命令行一 ...
- 纯绿色集成环境,可切换180个Mysql、700个PHP版本
测试神器又出新版!功能更强大(目测linux版本也快要出了,拭目以待吧) PHPWAMP8.8.8.8集成环境,目测大概更新如下内容(我也就是大略看了下更新内容) 1.支持自定义设置任意Mysql版本 ...
- 纯JS文本比较工具
前段时间由于工作需要写了一个纯JS文本比较工具 在这里与大家分享下 算法有待优化,还希望大家多多指教 先上效果图: 奉上源码(把源码保存为html格式的文件就可以直接运行了): <!doctyp ...
- 把docker当做绿色打包工具
如题,我只是把docker当成绿色版的各种环境的集成打包工具了 用到了docker的--net=host模式,这个暂时在mac下是有问题的,linux下正常使用,具体docker的网络模式参考这里,此 ...
- 在JAVA中封装JSONUtil工具类及使用
在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...
- Kali-linux破解纯文本密码工具mimikatz
mimikatz是一款强大的系统密码破解获取工具.该工具有段时间是作为一个独立程序运行.现在已被添加到Metasploit框架中,并作为一个可加载的Meterpreter模块.当成功的获取到一个远程会 ...
- 利用Jackson封装常用JsonUtil工具类
在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转 ...
- JsonUtil工具类
package comm; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collec ...
- jsonUtil 工具类
package org.konghao.basic.util; import java.io.IOException; import java.io.StringWriter; import com. ...
随机推荐
- 基于.net 的加载自定义配置-误操作
有时候 需要 将程序加载自定义的配置文件,除了自己写解析xml文件.内置的ConfigutionManager对象 是个不错的选项. 按照 app.config 的方式,做一个副本.然后从你的配置文件 ...
- 一些很经典的JavaScript的问题
1.作用域 (function() { var a = b = 5; })(); console.log(b); 输出:5 陷阱是,在函数表达式中有两个赋值,但a是用关键字var 来声明的,这意味着a ...
- 使用git 将自己的本地文件git到github上面的完整过程
1. 首先在github网站上新建一个仓库,复制仓库地址(HTTP形式或者SSH形式,后者利用SSH,在最后一步push 的时候可以不用输入用户名和密码). 2. 在本地某个你想要的(文件夹)目录 ...
- Oracle Explain Plan,hint解释与示例
Oracle 专业dba博客:http://blog.csdn.net/tianlesoftware Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响S ...
- 你的Android不好用,都是因为这几点原因
Android早已是全球最大.用户最多的移动操作系统,不过它离全球最好用还差得很远. 大家随手就能举出些曾经历过的糟心体验,如手机卡顿!电量不禁用!广告弹窗老是出现!不过很少有人会追根寻底的去问为何如 ...
- Hadoop分布式文件系统:架构和设计
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html 引言 前提和设计目标 硬件错误 流式数据访问 大规模数据集 简单的一致性模型 ...
- C# 获取当前打开的文件夹2
这一个则比较投机,准确性不能保证,可以参考: 这个类获取当前进程的句柄: public class MyProcess { private bool haveMainWi ...
- JMeter学习笔记--JMeter前置处理器
前置处理器被用来修改作用域内的采样器 HTML 链接解析器:解析从服务器得到的HTML响应,并从中提取链接和表单,使用perl型的正则表达式来寻求匹配项. HTML URL重写修饰符:使用URL重写来 ...
- OAF_OAF控件系列9 - Description Flexfiled描述性弹性域的实现(案例)
2014-06-17 Created By BaoXinjian
- Android开发13——内容提供者ContentProvider的基本使用
一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.ContentProvider为存储和获取数据提 ...