001
/**
002
* @Title JSONUtils.java
003
* @Package com.fbtt.site.utils
004
* @author huangsm
005
* @email huangsanm@gmail.com
006
* @date 2011-7-22 下午02:50:42
007
* @remark
008
* @version V1.0
009
*/
010
package com.fbtt.axst.utils;
011
012
import java.beans.PropertyDescriptor;
013
import java.sql.Date;
014
import java.util.List;
015
import java.util.Map;
016
017
import org.apache.commons.beanutils.PropertyUtils;
018
019
/**
020
* @ClassName: JSONUtils
021
* @author huangsm
022
* @date 2011-7-22 下午02:50:42
023
* @remark
024
*/
025
public class JSONUtils {
026
027
public static String stringToJson(String s) {
028
if (s == null) {
029
return nullTOJson();
030
}
031
StringBuilder sb = new StringBuilder();
032
for (int i = 0; i < s.length(); i++) {
033
char ch = s.charAt(i);
034
switch (ch) {
035
case '"':
036
sb.append("\\\"");
037
break;
038
case '\\':
039
sb.append("\\\\");
040
break;
041
case '\b':
042
sb.append("\\b");
043
break;
044
case '\f':
045
sb.append("\\f");
046
break;
047
case '\n':
048
sb.append("\\n");
049
break;
050
case '\r':
sb.append("\\r");
052
break;
053
case '\t':
054
sb.append("\\t");
055
break;
056
case '/':
057
sb.append("\\/");
058
break;
059
default:
060
if (ch >= '\u0000' && ch <= '\u001F') {
061
String ss = Integer.toHexString(ch);
062
sb.append("\\u");
063
for (int k = 0; k < 4 - ss.length(); k++) {
064
sb.append('0');
065
}
066
sb.append(ss.toUpperCase());
067
} else {
068
sb.append(ch);
069
}
070
}
071
}
072
return sb.toString();
073
}
074
/***
075
* 对象转换成为json
076
* 这里是描述这个方法的作用
077
* @return
078
* @author Java
079
* @date 2011-7-22 下午02:59:13
080
*/
081
public static String objectToJson(Object obj){
082
StringBuffer json = new StringBuffer();
083
if (obj == null) {
084
json.append("\"\"");
085
} else if (obj instanceof Integer) {
086
json.append("\"").append(numberToJson((Integer)obj)).append("\"");
087
} else if (obj instanceof Boolean) {
088
json.append("\"").append(booleanToJson((Boolean)obj)).append("\"");
089
} else if (obj instanceof String) {
090
json.append("\"").append(stringToJson(obj.toString())).append("\"");
091
} else if (obj instanceof Object[]) {
092
json.append("\"").append(arrayToJson((Object[])obj)).append("\"");
093
} else if (obj instanceof List) {
094
json.append("\"").append(listToJson((List< >)obj)).append("\"");
095
} else if (obj instanceof Map) {
096
json.append("\"").append(mapToJson((Map< , >)obj)).append("\"");
097
} else if(obj instanceof java.sql.Date){
098
json.append("\"").append(dateToJson((Date)obj)).append("\"");
099
} else if(obj instanceof java.util.Date){
100