package com.feit.crm.util;
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格式 遵循JSON组织公布标准
*
* @date 2008/05/07
* @version 1.0.0
*/
public class JsonUtil {
/** Commons Logging instance. */
private static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
.getLog(JsonUtil.class);
/**
* @param obj 任意对象
* @return String
*/
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();
}
/**
* @param bean bean对象
* @return String
*/
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) {}
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
/**
* @param list list对象
* @return String
*/
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("]");
}
return json.toString();
}
/**
* @param array 对象数组
* @return String
*/
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();
}
/**
* @param map map对象
* @return String
*/
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("}");
}
return json.toString();
}
/**
* @param set 集合对象
* @return String
*/
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("]");
}
return json.toString();
}
/**
* @param s 参数
* @return String
*/
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();
}
}
分享到:
相关推荐
JSONUtil是一个Java工具类,专门设计用于处理JSON数据,它提供了方便的方法将JSON字符串与Java对象之间进行转换,无需依赖其他外部jar包。本文将深入探讨JSONUtil的核心功能及其在实际开发中的应用。 首先,...
JsonUtil json工具类 JsonUtil json工具类
本文将深入探讨“JsonUtil”代码工具类的相关知识点,主要基于提供的两个文件:JsonParser.java和JsonValue.java。 JsonUtil工具类通常包含了处理JSON对象与Java对象之间转换的一系列方法。在描述中提到的“2个工具...
JSON jar包含源码及应用类JSONUtil,可以直接查看源码不用反编译,并且可以直接调用JSONUtil工具类进行,JSon字符串转换为JavaBean ,并可以把JavaBean转换为JSon字符串。
《JsonUtil工具类详解》 在Java开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛用于前后端数据交互。而JsonUtil工具类则是开发者为了简化JSON与Java对象之间的转换而创建的,它极...
JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码JSONUtil最新源代码...
json工具类,基于com.google.code.gson封装的json转换工具类
Google json工具类,将java对象装换为json,支持泛型和任意类型
`JsonUtil` 是一个Java工具类,专门用来处理JSON数据,特别是将JSON对象数组转换为List类型,方便对数据进行进一步的操作。 在Java中,处理JSON数据通常需要借助第三方库,如Jackson、Gson或Fastjson等。这些库提供...
JSONUtil是Java中用于处理JSON数据的工具类,通常用于将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象。这个过程在Java中被称为对象序列化和反序列化。 Java的`JsonUtil`类通常是自定义的工具类,...
JSONUtil工具类是Java开发中处理JSON数据的一种实用工具,它简化了JSON对象与Java对象之间的转换过程。在本文中,我们将深入探讨JSONUtil工具类的实现和使用方法,以及如何利用阿里巴巴的Fastjson库来增强JSON操作。...
自己封装的json数据转换类,并打成jar包 可以直接使用
leano-jsonutil LCMC(更少代码,更舒适) 简单的Json Util项目,可帮助您快速创建Json。 Json util是对json操作的开发人员友好的sepc和api。 GsonUtil instance = GsonUtil.instance(); //Even number of params...
json解析大全android,java
JSONUtil java工具类,快速方便读取JSON
为了提高代码的可重用性和可维护性,我们可以将这些常见的操作封装到工具类中,例如`JsonUtil`和`CookieUtil`。下面我们将详细讲解这两个工具类的工作原理及其在实际开发中的应用。 首先,`JsonUtil`工具类主要用于...
json 工具类 转换 获取泛型的Collection Type JavaType javaType = mapper.getTypeFactory().constructParametricType( collectionClass, elementClasses);
包含了 通过string转json,通过jsonarray转json,获取json里面的值,包括,boolean,int,long,string,json,jsonarry等类型,同时还可以给json赋值,是一个比较多用途的工具类,同时还进行了异常处理
json_TO_clientdataset_JSONUtil包.rar 整理了一下 JSON 轉CLIENTDATASET 功能 相關單元文件, 從網絡下載的工具類: SUPEROBJECT.PAS, myUnicode.pas , uJSONDB.pas, uDeltaToSQL.pas, superxmlparser.pas 測試...