`
hy2012_campus
  • 浏览: 30571 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

json转换工具

    博客分类:
  • java
 
阅读更多

在不利用第三方工具情况下,将对象与json之间进行相互转换

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Set;


/**
 * 功能:将数据格式转换成json工具类 作者:jackKang 时间:2011-03-12 21:09:10 版本:1.0
 */
public class JsonUtil {

	/**
	 * 
	 * 功能:实现将一个ojb对象转换成json格式数据的方法 时间:2011-3-12 下午09:24:23
	 * 
	 * @param obj
	 * @return:返回封装好的json格式数据
	 */
	@SuppressWarnings("unchecked")
	public static String object2json(Object obj) {
		StringBuilder json = new StringBuilder();
		if (obj == null) {
			json.append("\"\"");
		} else if (obj instanceof String || obj instanceof Integer
				|| obj instanceof Float || obj instanceof Boolean
				|| obj instanceof Short || obj instanceof Double
				|| obj instanceof Long || obj instanceof BigDecimal
				|| obj instanceof BigInteger || obj instanceof Byte) {
			json.append("\"").append(string2json(obj.toString())).append("\"");
		} else if (obj instanceof Object[]) {
			json.append(array2json((Object[]) obj));
		} else if (obj instanceof List) {
			json.append(list2json((List<?>) obj));
		} else if (obj instanceof Map) {
			json.append(map2json((Map<?, ?>) obj));
		} else if (obj instanceof Set) {
			json.append(set2json((Set<?>) obj));
		} else {
			json.append(bean2json(obj));
		}
		return json.toString();
	}

	/**
	 * 
	 * 功能:将一个实体对象封装成json格式数据的方法 时间:2011-3-12 下午09:25:44
	 * 
	 * @param bean
	 * @return:json格式Bean对象
	 */
	public static String bean2json(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 = object2json(props[i].getName());
					String value = object2json(props[i].getReadMethod().invoke(
							bean));
					json.append(name);
					json.append(":");
					json.append(value);
					json.append(",");
				} catch (Exception e) {
					System.out.println("转换出错:" + e.getMessage());
				}
			}
			json.setCharAt(json.length() - 1, '}');
		} else {
			json.append("}");
		}
		/* 返回转换好的json格式 */
		return json.toString();
	}

	/**
	 * 
	 * 功能:将一个List集合对象转换成json格式的方法 时间:2011-3-12 下午09:26:51
	 * 
	 * @param list
	 *            :集合对象
	 * @return:转换后的json List对象
	 */
	public static String list2json(List<?> list) {
		StringBuilder json = new StringBuilder();
		json.append("[");
		/* 非空判断集合对象 */
		if (list != null && list.size() > 0) {
			for (Object obj : list) {
				json.append(object2json(obj));
				json.append(",");
			}
			json.setCharAt(json.length() - 1, ']');
		} else {
			json.append("]");
		}
		/* 返回数据转换后的集合json对象 */
		return json.toString();
	}

	/**
	 * 功能:将一个数组转换成json格式方法 时间:2011-3-12 下午09:28:24
	 * 
	 * @param array
	 *            :数组
	 * @return:转换后的json对象格式数据
	 */
	public static String array2json(Object[] array) {
		StringBuilder json = new StringBuilder();
		json.append("[");
		if (array != null && array.length > 0) {
			for (Object obj : array) {
				json.append(object2json(obj));
				json.append(",");
			}
			json.setCharAt(json.length() - 1, ']');
		} else {
			json.append("]");
		}
		return json.toString();
	}

	/**
	 * 
	 * 功能:将一个Map集合转换成json格式数据方法 时间:2011-3-12 下午09:29:35
	 * 
	 * @param map
	 * @return
	 */
	public static String map2json(Map<?, ?> map) {
		StringBuilder json = new StringBuilder();
		json.append("{");
		/* 非空判断 */
		if (map != null && map.size() > 0) {
			for (Object key : map.keySet()) {
				json.append(object2json(key));
				json.append(":");
				json.append(object2json(map.get(key)));
				json.append(",");
			}
			json.setCharAt(json.length() - 1, '}');
		} else {
			json.append("}");
		}
		/* 返回转换后的json数据格式 */
		return json.toString();
	}

	/**
	 * 功能:将set集合转换成json格式数据的方法 时间:2011-3-12 下午09:30:24
	 * 
	 * @param set
	 *            :Set对象
	 * @return:转换后的json格式数据
	 */
	public static String set2json(Set<?> set) {
		StringBuilder json = new StringBuilder();
		json.append("[");
		if (set != null && set.size() > 0) {
			for (Object obj : set) {
				json.append(object2json(obj));
				json.append(",");
			}
			json.setCharAt(json.length() - 1, ']');
		} else {
			json.append("]");
		}
		/* 返回转换拼接后的json格式 */
		return json.toString();
	}

	/**
	 * 功能:将一个String格式的数据转换成json格式的方法 时间:2011-3-12 下午09:31:41
	 * 
	 * @param s
	 *            :参数
	 * @return:转换后的json格式
	 */
	public static String string2json(String s) {
		if (s == null)
			return "";
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < s.length(); i++) {
			char ch = s.charAt(i);
			switch (ch) {
			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;
//			case '/':
//				sb.append("\\/");
//				break;
			default:
				if (ch >= '\u0000' && ch <= '\u001F') {
					String ss = Integer.toHexString(ch);
					sb.append("\\u");
					for (int k = 0; k < 4 - ss.length(); k++) {
						sb.append('0');
					}
					sb.append(ss.toUpperCase());
				} else {
					sb.append(ch);
				}
			}
		}
		return sb.toString();
	}

}

 

分享到:
评论
2 楼 hy2012_campus 2015-12-17  
这都是看别人写的 然后抽出来 ,都是盗版的,在哪里盗版的我都忘记了
1 楼 OceanWang 2015-12-04  
进来瞅瞅    写的不错哈

相关推荐

    json转换工具jackson

    本文将深入探讨Jackson作为JSON转换工具的关键知识点,并基于提供的博文链接进行补充。 1. **Jackson库介绍** Jackson是一个开源项目,其核心库为`com.fasterxml.jackson.core`,包括`jackson-databind`、`jackson...

    JSON 转换工具

    本文将详细介绍如何使用JSON转换工具,包括将JSON字符串转换为Objective-C的JsonModel和Swift的HandyJSON,以及JsonModel到HandyJSON的转换。 首先,让我们了解一下JsonModel。JsonModel是Objective-C的一个库,它...

    java XML 和json 转换工具类

    java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和...

    andriod之json转换工具jar包

    这里提到的"andriod之json转换工具jar包"是一个专门为Android平台设计的JSON处理库,帮助开发者快速地将Java对象转换为JSON格式,反之亦然。 该jar包包含了两个关键组件: 1. `jackson-mapper-asl-1.9.11.jar`:这...

    Json 转换工具类

    描述中提到的"在开发过程中总是遇到需要类似的工具类,但是没有好用的",这反映出JSON转换在实际开发中的常见需求,以及`Newtonsoft.Json`在满足这些需求时的高效性和易用性。通过这个工具类,开发者可以避免手动...

    C#平台JSON转换工具

    本篇将详细介绍"C#平台JSON转换工具"的相关知识点。 1. JSON与C#的结合: C#提供了System.Json命名空间(在.NET Framework 3.5 SP1及更高版本中引入)来处理JSON,但这个API在.NET Framework 4.0中已被弃用。...

    JSON转换工具类

    对象与json相互转换,map转json,json转map等基础工具类

    格式转换工具json2bin

    JSON转换工具通常包含以下功能: 1. **解析JSON**: 工具首先需要解析JSON文本,将其转化为内存中的数据结构。这涉及到验证JSON语法的正确性,如正确的大括号匹配、引号使用等。 2. **编组数据**: 将解析后的JSON...

    grib2json转换工具

    《grib2json转换工具详解》 在信息技术领域,数据交换和处理的格式多样,其中GRIB(GRIdded Binary)和JSON(JavaScript Object Notation)是两种常见的数据存储和传输格式。GRIB主要用于气象、海洋学等领域,存储...

    JsonUtils(Json转换工具类)

    《JsonUtils:强大的Json转换工具类》 在Java开发中,JSON作为一种轻量级的数据交换格式,被广泛用于服务器与客户端之间的数据传输。为了方便开发者处理JSON格式的数据,出现了许多库,如Jackson、Gson、Fastjson等...

    json转换工具类

    json转换工具类,可以转换很多格式。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Global site tag (gtag.js) - Google Analytics