纯绿色 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. ...
随机推荐
- 〖Linux〗VirtualBox修改虚拟电脑硬盘(vdi)空间大小
1. 查看需要修改的虚拟硬盘: [scue@Link:tftpserver]$ vboxmanage list hdds UUID: 79d65850--40c3-a8e7-715b199d1673 ...
- python之函数用法getattr()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法getattr() #getattr() #说明: ''' getattr(...) ...
- 通过jdbc使用PreparedStatement,提升性能,防止sql注入
为什么要使用PreparedStatement? 一.通过PreparedStatement提升性能 Statement主要用于执行静态SQL语句,即内容固定不变的SQL语句.Statement每执行 ...
- 公钥私钥与SSL的握手协议(转)
一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私 ...
- Mysql 监视工具
对于开发人员来说,最头大的莫过于 ,你本地没事,线上 错误日志一堆. 尤其是数据库通信那一层.SqlServer 有 sql profile 用来监视对应的server上的通信日志,参数 命令等信息. ...
- 很幽默的讲解六种Socket IO模型
很幽默的讲解六种Socket IO模型 本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教. 一:select模型二:WSAAsyncSelect ...
- SpringBoot之自定义验证码
代码地址如下:http://www.demodashi.com/demo/14280.html 项目介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控 ...
- lua入门之二:c/c++ 调用lua及多个函数返回值的获取
当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 同样类型的栈来交互. C 函数从栈中获取她的參数.调用结束后将返回结果放到栈中.为了区分返回结果和栈中的其它的值,每一个 C 函数还会返回结 ...
- Ubuntu12.04设置屏幕分辨率
Ubuntu屏幕分辨率设置 Table of Contents 1 概述 2 设置前 3 设置 4 参考 1 概述 我的Ubuntu12.04不知道被我怎么折腾了一番,屏幕的分辨率错乱了,没有办法找到 ...
- HDUOJ--畅通工程
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...