`

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工具类

    java json 工具类java json 工具类

    java json 工具类java json 工具类 java json 工具类java json 工具类 java json 工具类java json 工具类 java json 工具类java 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数据了,

Global site tag (gtag.js) - Google Analytics