`

json工具类

    博客分类:
  • tool
阅读更多
/**
* JSON实用处理类
* @author
*/
public class Json {
public static String toJson(Object obj) {
String s = castToJson(obj);
if (s != null) {
return s;
} else {
return toJson(getAttributes(obj));
}
}

public static String toJson(Map map) {
String result = "";
Object[] keyArr =  map.keySet().toArray();
for (int i = 0; i < keyArr.length; i++) {
Object value = map.get(keyArr[i]);
String s = castToJson(value);
if (s != null) {
result += "\"" + keyArr[i] + "\":" + s + ",";
} else if (value instanceof List) {
String v = toJson((List) value);
result += "\"" + keyArr[i] + "\":" + v + ",";
} else if (value instanceof Object[]) {
String v = toJson((Object[]) value);
result += "\"" + keyArr[i] + "\":" + v + ",";
} else if (value instanceof Map) {
Map attr = castMap((Map) value);
attr = removeListAttr(attr);
result += "\"" + keyArr[i] + "\":" + Json.toJson(attr) + ",";
// }else if(value instanceof List){
// List attr =(List)value;
// result += "\"" + keyArr[i] + "\":" + Json.toJson(attr) + ",";
} else if (value.getClass().getName().startsWith("java") == false) {
Map attr = getAttributes(value);
attr = removeListAttr(attr);
result += "\"" + keyArr[i] + "\":" + Json.toJson(attr) + ",";
} else {
result += "\"" + keyArr[i] + "\":" + "\"" + value.toString() + "\",";
}
}
if (result.length() == 0) {
return "{}";
} else {
return "{" + result.substring(0, result.length() - 1) + "}";
}
}

public static String toJson(Object[] aa) {
if (aa.length == 0) {
return "[]";
} else {
String result = "";
for (int i = 0; i < aa.length ; i++) {
Object obj = aa[i];
String s = castToJson(obj);
if (s != null) {
result += s + ",";
} else if (obj instanceof Map) {
Map map = castMap((Map) obj);
//map = removeListAttr(map);
result += toJson(map) + ",";
} else {
Map attr = getAttributes(obj);
attr = removeListAttr(attr);
result += toJson(attr) + ",";
}
}
return "[" + result.substring(0, result.length() - 1) + "]";
}
}

public static String toJson(List ll) {
return toJson(ll.toArray());
}

/**
* 取得对象的属性
*
* @param obj
* @return 对象属性表
*/
public static Map getAttributes(Object obj) {
Class c = obj.getClass();
try {
Method method = c.getMethod("isProxy", null);
Boolean result = (Boolean) method.invoke(obj, null);
if (result.booleanValue() == true) {
c = c.getSuperclass();
}
} catch (Exception e) {
}
Map attr = new HashMap();

// 取得所有公共字段
Field field[] = c.getFields();
for (int i =0; i < field.length; i++) {
Field f = field[i];
try {
Object value = f.get(obj);
attr.put(f.getName(), value);
} catch (Exception e) {
}
}

// 取得所有本类方法
c.getDeclaredMethods();
Method method[] = c.getDeclaredMethods();
for (int j = 0; j < method.length; j++) {
Method m = method[j];
String mname = m.getName();
if (mname.equals("getClass")) {
continue;
} else if (mname.startsWith("get")) {
String pname = mname.substring(3);
if (pname.length() == 1) {
pname = pname.toLowerCase();
} else {
pname = pname.substring(0, 1).toLowerCase()
+ pname.substring(1);
}

try {
Object value = m.invoke(obj, null);
attr.put(pname, value);
} catch (Exception e) {

}
} else if (mname.startsWith("is")) {
String pname = mname.substring(2);
if (pname.length() == 1) {
pname = pname.toLowerCase();
} else {
pname = pname.substring(0, 1).toLowerCase()
+ pname.substring(1);
}

try {
Object value = m.invoke(obj, null);
attr.put(pname, value);
} catch (Exception e) {
}
}
}
return attr;
}

/**
* 将简单对象转换成JSON串
*
* @param obj
* @return 如果是简单对象则返回JSON,如果是复杂对象则返回null
*/
private static String castToJson(Object obj) {
if (obj == null) {
return "null";
} else if (obj instanceof Boolean) {
return obj.toString();
} else if (obj instanceof Integer || obj instanceof Long
|| obj instanceof Float || obj instanceof Double
|| obj instanceof Short || obj instanceof java.math.BigInteger
|| obj instanceof java.math.BigDecimal) {
return obj.toString();
} else if (obj instanceof String) {
String v = (String) obj;
v = v.replaceAll("\\\\", "\\\\\\\\");
v = v.replaceAll("\n", "\\\\n");
v = v.replaceAll("\r", "\\\\r");
v = v.replaceAll("\"", "\\\\\"");
v = v.replaceAll("'", "\\\\\'");
return "\"" + v + "\"";
} else if (obj instanceof java.sql.Date) {
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(
"yyyy-MM-dd");
java.sql.Date v = (java.sql.Date) obj;
String s = df.format(new java.util.Date(v.getTime()));
return "\"" + s + "\"";
} else if (obj instanceof java.util.Date) {
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(
"yyyy-MM-dd");
java.util.Date v = (java.util.Date) obj;
String s = df.format(v);
return "\"" + s + "\"";
} else if (obj instanceof java.util.Calendar) {

java.util.Calendar v = (java.util.Calendar) obj;
String s = DateUtils.toDateStr(v);
return "\"" + s + "\"";
} else if (obj instanceof java.sql.Timestamp) {
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
java.sql.Timestamp v = (java.sql.Timestamp) obj;
String s = df.format(new java.util.Date(v.getTime()));
return "\"" + s + "\"";
} else if (obj instanceof java.sql.Clob) {

return "\"" + "" + "\"";
} else if (obj instanceof java.sql.Blob) {

return "\"" + "" + "\"";
} else {
return null;
}

}

public static Map castMap(Map map) {
Map newMap = new HashMap();
Object key[] = map.keySet().toArray();
for (int i = 0; i < key.length ; i++) {
newMap.put(key[i].toString(), map.get(key[i]));
}
return newMap;
}

/**
* 删除属性中类型是List的属性
*
* @param map
* @return
*/
private static Map removeListAttr(Map map) {
Map newMap = new HashMap();
Object[] entry = map.entrySet().toArray();
for (int i = 0; i < entry.length ; i++) {
Entry en = (Entry) entry[i];
if (!(en.getValue() instanceof List)) {
newMap.put(en.getKey(), en.getValue());
}
}
return newMap;
}
}
分享到:
评论

相关推荐

    java服务端json工具类

    java服务器用的json工具类,自己封装的,支持beanToJson ListToJson arrayToJson等

    封装完善的json工具类

    将集合、数组、字符串等形式转换成json格式,封装完善的json工具类

    bean,json工具类

    这个"bean,json工具类"就是为了解决这个问题而设计的,它的主要功能可能包括以下几点: 1. **Bean到JSON转换**:工具类提供了将Java Bean对象转换为JSON字符串的方法。这通常通过使用如Jackson、Gson或Fastjson等...

    asp的JSON工具类

    标题中的"asp的JSON工具类"就是为了解决这一问题,使得在ASP中读取、解析和生成JSON数据变得更加便捷。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    Java json工具类,jackson工具类,ObjectMapper工具类

    总结来说,`Java json工具类`如`Jackson`和`ObjectMapper`,以及开发者自定义的`JacksonUtils`工具类,是Java开发中处理JSON数据的关键工具。它们能够方便地将Java对象和JSON格式数据互相转换,同时提供了一系列高级...

    json工具类源代码

    在实际开发中,使用JSON工具类时,常见的操作包括: - **序列化**:将Java对象转换为JSON字符串,这在发送HTTP请求或保存数据到文件时非常有用。 - **反序列化**:将JSON字符串解析为Java对象,便于在程序中使用...

    Json工具类

    本篇将详细介绍`Json工具类`及其相关的知识点。 一、Gson库 Gson是Google提供的一个Java库,能够将Java对象转化为JSON字符串,反之亦然。它通过简单的API设计,使得JSON数据的序列化和反序列化变得非常便捷。例如,...

    JsonUtil json工具类

    JsonUtil json工具类 JsonUtil json工具类

    json工具类,java日期转换,字符串转换等各种工具类

    1. **JSON工具类**: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们通常使用`org.json`库或`com.google.gson`库来处理JSON数据。...

    JSON工具类jar包

    Java处理JSON的全套工具类,依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar

    实体类反射非空赋值,AjaxJson工具类

    在“实体类反射非空赋值,AjaxJson工具类”这个主题中,我们将探讨如何使用反射来安全地为实体类的属性赋值,并结合Ajax与JSON进行数据的转换和交互。 首先,让我们深入了解反射的概念。Java反射API提供了Class类,...

    excel 转java 以及JSON工具类

    "Excel转Java以及JSON工具类"提供了一种便捷的方式来管理和转化结构化的数据。这种工具通常用于将Excel表格中的数据转换为Java对象或者JSON格式,方便在编程环境中进行操作和使用。 Excel是一种广泛使用的电子表格...

    XML转JSON工具类

    XML转JSON工具类,支持多层XML嵌套解析转JSON,采用dom4j解析转JSON格式,多次线上环境使用

    JSON工具类包含对象转hashmap

    包含各种对象转换成json对象,还包含把对象中的属性转成hashmap 并且可以过滤为空的或者为null的对象

    JAVA转JSON工具类说明

    java转JSON工具类说明,以后看着函数说明就自己可以随便使用JSON数据了,

    C++学习笔记和实践项目,实践项目包括Json工具类、设计模式的C++实现、消息队列、智能指针,linux下的并发控制工具等

    C++学习笔记和实践项目,实践项目包括Json工具类、设计模式的C++实现、消息队列、智能指针,linux下的并发控制工具、线程池,epoll管理器和Mysql连接池、STL容器的快捷输出工具和页面置换算法(FIFO, LRU, LFU)的...

Global site tag (gtag.js) - Google Analytics