纯绿色 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. ...
 
随机推荐
- exception is the version of xbean.jar correct
			
CreateTime--2018年2月5日09:20:00 Author:Marydon 异常: is the version of xbean.jar correct 情景还原: 在使用Java ...
 - TP3.2设置URL伪静态满足更好的SEO效果
			
URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行. ...
 - 深入PHP内核之全局变量
			
在阅读PHP源码的时候,会遇到很多诸如:CG(),EG() ,PG(),FG()这样的宏,如果不了解这些宏的意义,会给理解源码造成很大困难 EG().这个宏可以用来访问符号表,函数,资源信息和常量 C ...
 - static不实现多态
			
class Father { public static String getName() { return "father"; } } class Children extend ...
 - python接口自动化(二十七)--html 测试报告——上(详解)
			
简介 上一篇我们批量执行完用例后,生成的测试报告是文本形式的,不够直观,而且报告一般都是发给leader的,所以最好是直观一目了然,为了更好的展示测试报告,最好是生成 HTML 格式的.unittes ...
 - 【C++】const成员函数
			
形式: 在成员函数后面加上const限定词,表示不会修改对象内容. 例如Circle类: class Circle { double r; public: Circle(double newr) { ...
 - 【jQuery】网上看到一个不错的登陆界面
			
预览截图如下: Html部分代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
 - 转 ShowSlow+Yslow页面前端性能测试环境搭建
			
----//工具介绍 Yslow:YSlow是Yahoo发布的一款基于FireFox的插件. YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. ShowSlo ...
 - Comet入门及最简单的Java Demo
			
在浏览网页的时候,假设有新的消息,怎样接收到?HTTP协议不能由server主动给client发送消息. 1.刷微博.逛论坛贴吧,想看最新的信息怎么办?F5刷新一下就OK了! 2.上面一种方式是被动的 ...
 - mysql 查看是否被锁
			
SHOW OPEN TABLES FROM huahua