纯绿色 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. ...
随机推荐
- PO*创建标准采购订单
-- l_iface_rec po_headers_interface%ROWTYPE; 校验头相关信息 ) INTO l_po_count FROM po_headers_all p ...
- 1、redis之安装与配置
下载安装: redis-server.exe redis服务器的daemon启动程序 redis.conf redis配置文件 redis-cli.exe redis命令行操作工具.当然,也可以用te ...
- 身份证查询API
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://apistore.baidu.com/apiworks/servicedetail/113.h ...
- 解决:Access denied for user ''@'sinochip-79e833' (using password: NO)
uthentication to host '' for user '' using method 'mysql_native_password' failed with message: Acces ...
- mysql高效索引之覆盖索引
概念 如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作 判断标准 使用explain,可以通过输出的extra列来判断,对于一个索引 ...
- vi中全选的命令或者快捷方式
http://blog.163.com/boby_boke/blog/static/126877354200910308522382/网上有两种说法比较多:“:1,$y”和 “dG” 但是我查到有资料 ...
- Cookies揭秘 [Asp.Net, Javascript]
一,前言 Cookies想必所有人都了解, 但是未必所有人都精通.本文讲解了Cookies的各方面知识, 并且提出来了最佳实践.这是笔者在日常工作中的积累和沉淀. 二,基础知识 1.什么是Cookie ...
- mongodb win7 32位系统安装以及配置
今天安装 win7 32位系统 mongodb 费了好大劲..记录一下,希望相同的同学可以少踩点坑. 1.安装 我安装的是3.2.4 地址:http://downloads.mongodb.org/ ...
- android 搜索自动匹配关键字并且标红
这个效果主要是为了着重表现搜索关键字的 . 1. 单关键字匹配 若只需匹配 搜索 ...
- Python tuple 函数
描述 Python 元组 tuple() 函数将列表转换为元组. 语法 以下是 tuple 的语法: tuple( seq ) 参数 seq -- 要转换为元组的序列. 返回值 返回元组. 实例 以下 ...