JsonUtil

package com.zxwl.common.util;

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringEscapeUtils;

public class JsonUtil
{

	/**
	 * 将一个对象转换成json字符串
	 */
	@SuppressWarnings("rawtypes")
	public static String objectToJson(Object object) 
	{
		StringBuilder json = new StringBuilder();
		if (object == null)
		{
			json.append("\"\"");
		} 
		else if(object instanceof Integer || object instanceof Short)
		{
			json.append("\"").append(object).append("\"");
		}
		else if (object instanceof String) 
		{	
			String value = (String)object;
			// 处理特殊字符
			value = value.replaceAll("\r\n", "\\\\u000d\\\\u000a");
			value = value.replaceAll("\n", "\\\\u000d\\\\u000a");
			value = value.replaceAll("\"", "'");
			value = value.replaceAll("\'", "\\'");
			value = value.replaceAll("\\\\", "/");
			value = StringEscapeUtils.escapeHtml3(value);
			json.append("\"").append(value).append("\"");
			
		} 
		else if(object instanceof Date)
		{
			json.append("\"").append(formateDate((Date)object)).append("\"");
		}
		else if(object instanceof Boolean)
		{
			json.append("\"").append(object).append("\"");
		}
		else if(object instanceof List)
		{
			json.append(listToJson((List)object));
		}
		else if(object instanceof Map)
		{
			json.append(MaptoJson((Map)object));
		}
		else 
		{	
			json.append(beanToJson(object));
		}
		return json.toString();
	}
	
	/**
	 * 将一个bean对象转换成json字符串
	 */
	public static String beanToJson(Object bean)
	{
		StringBuilder json = new StringBuilder();
		json.append("{");
		PropertyDescriptor[] props = null;
		try
		{
			props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();
		} catch (IntrospectionException e)
		{
		}
		if (props != null)
		{
			for (int i = 0; i < props.length; i++)
			{
				try
				{
					String name = objectToJson(props[i].getName());
					String value = objectToJson(props[i].getReadMethod().invoke(bean));
					json.append(name);
					json.append(":");
					json.append(value);
					json.append(",");
				} catch (Exception e)
				{
				}
			}
			json.setCharAt(json.length() - 1, '}');
		} else
		{
			json.append("}");
		}
		return json.toString();
	}

	/**
	 * 将一个集合转换成json字符串
	 * 
	 */
	public static String listToJson(List<?> list)
	{
		StringBuilder json = new StringBuilder();
		json.append("[");
		if (list != null && list.size() > 0)
		{
			for (Object obj : list)
			{
				json.append(objectToJson(obj));
				json.append(",");
			}
			json.setCharAt(json.length() - 1, ']');
		} else
		{
			json.append("]");
		}
		return json.toString();
	}

	/**
	 * 将一个map转换成json字符串
	 */
	public static  String MaptoJson(Map<?,?> map){
		   Set<?> keys = map.keySet();
		   Object key = null;
		   Object value = null;
		   StringBuffer jsonBuffer = new StringBuffer();
		   jsonBuffer.append("{");    
		   for(Iterator<?> it = keys.iterator();it.hasNext();)
		   {
		       key =  it.next();
		       value = map.get(key);
		       if(key == null && value == null)
		       {
		    	   continue;
		       }
		       jsonBuffer.append("\""+key.toString()+"\":" + objectToJson(value));
		       if(it.hasNext())
		       {
		            jsonBuffer.append(",");
		       }
		       
		   }
		   jsonBuffer.append("}");
		   return jsonBuffer.toString();
		}

	public static String replaceBlank(String str)
	{
		String dest = "";
		if (str != null)
		{
			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
			Matcher m = p.matcher(str);
			dest = m.replaceAll("");
		}
		return dest;
	}

	/**
	 * 格式化时间
	 */
	private static String formateDate(Date date)
	{
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
		if (date != null)
		{
			return formatter.format(date);
		}
		return "";
	}

	/**
	 * json特殊字符串处理
	 * 
	 * @param strjson
	 * @return
	 */
	public static String ToJson(String strjson)
	{
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < strjson.length(); i++)
		{
			char c = strjson.toCharArray()[i]; // strjosn转换为字节数组
			switch (c)
			{
				case '\"' :
					sb.append("\\\"");
					break;
				case '\\' :
					sb.append("\\\\");
					break;
				// case '/': sb.append("\\/"); break;
				case '\b' :
					sb.append("\\b");
					break;
				case '\f' :
					sb.append("\\f");
					break;
				case '\n' :
					sb.append("\\n");
					break;
				case '\r' :
					sb.append("\\r");
					break;
				case '\t' :
					sb.append("\\t");
					break;
				default :
					sb.append(c);
					break;
			}
		}
		return sb.toString();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值