002 |
* @Title JSONUtils.java |
003 |
* @Package com.fbtt.site.utils |
005 |
* @email huangsanm@gmail.com |
006 |
* @date 2011-7-22 下午02:50:42 |
010 |
package com.fbtt.axst.utils; |
012 |
import java.beans.PropertyDescriptor; |
013 |
import java.sql.Date; |
014 |
import java.util.List; |
015 |
import java.util.Map; |
017 |
import org.apache.commons.beanutils.PropertyUtils; |
020 |
* @ClassName: JSONUtils |
022 |
* @date 2011-7-22 下午02:50:42 |
025 |
public class JSONUtils { |
027 |
public static String stringToJson(String s) { |
031 |
StringBuilder sb = new StringBuilder(); |
032 |
for ( int i = 0 ; i < s.length(); i++) { |
033 |
char ch = s.charAt(i); |
060 |
if (ch >= '\u0000' && ch <= '\u001F' ) { |
061 |
String ss = Integer.toHexString(ch); |
063 |
for ( int k = 0 ; k < 4 - ss.length(); k++) { |
066 |
sb.append(ss.toUpperCase()); |
072 |
return sb.toString(); |
079 |
* @date 2011-7-22 下午02:59:13 |
081 |
public static String objectToJson(Object obj){ |
082 |
StringBuffer json = new StringBuffer(); |
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 |
json.append( "\"" ).append(dateToJson((Date)obj)).append( "\"" ); |
102 |
json.append( "\"" ).append(stringToJson(obj.toString())).append( "\"" ); |
104 |
return json.toString(); |
110 |
* @return {["pname":"val"],["pname":"val"]...} |
112 |
* @date 2011-7-22 下午03:02:49 |
114 |
public static String beanToJson(Object obj) { |
115 |
StringBuffer json = new StringBuffer( "{" ); |
117 |
PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(obj); |
118 |
if (pds != null && pds.length > 0 ){ |
119 |
for (PropertyDescriptor pd : pds) { |
120 |
if (pd.getName().equals( "class" )) |
122 |
String pname = objectToJson(pd.getName()); |
123 |
String val = objectToJson(pd.getReadMethod().invoke(obj)); |
129 |
json.setCharAt(json.length() - 1 , '}' ); |
133 |
} catch (Exception e) { |
136 |
return json.toString(); |
139 |
public static String beanToJson(Object obj, String params) { |
140 |
StringBuffer json = new StringBuffer( "{" ); |
142 |
PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(obj); |
143 |
if (pds != null && pds.length > 0 ){ |
144 |
for (PropertyDescriptor pd : pds) { |
145 |
String pname = pd.getName(); |
146 |
if (pname.equals( "class" )) |
148 |
if (params.indexOf(pname) == - 1 ) |
150 |
pname = objectToJson(pname); |
151 |
String val = objectToJson(pd.getReadMethod().invoke(obj)); |
157 |
json.setCharAt(json.length() - 1 , '}' ); |
161 |
} catch (Exception e) { |
164 |
return json.toString(); |
174 |
* @date 2011-7-22 下午03:02:27 |
176 |
public static String mapToJson(Map<?, ?> map) { |
177 |
StringBuilder json = new StringBuilder(); |
179 |
if (map != null && map.size() > 0 ) { |
180 |
for (Object key : map.keySet()) { |
181 |
json.append( "" + objectToJson(key) + "" ); |
183 |
json.append( "" + objectToJson(map.get(key)) + "" ); |
186 |
json.setCharAt(json.length() - 1 , '}' ); |
190 |
return json.toString(); |
198 |
* @date 2011-7-22 下午03:02:15 |
200 |
public static String listToJson(List<?> list) { |
201 |
StringBuffer json = new StringBuffer(); |
203 |
if (list != null && list.size() > 0 ) { |
204 |
for (Object obj : list) { |
205 |
json.append(beanToJson(obj)); |
208 |
json.setCharAt(json.length() - 1 , ']' ); |
212 |
return json.toString(); |
215 |
public static String listToJson(List<?> list, String params) { |
216 |
StringBuffer json = new StringBuffer(); |
218 |
if (list != null && list.size() > 0 ) { |
219 |
for (Object obj : list) { |
220 |
json.append(beanToJson(obj, params)); |
223 |
json.setCharAt(json.length() - 1 , ']' ); |
227 |
return json.toString(); |
236 |
* @date 2011-7-22 下午03:02:05 |
238 |
private static String arrayToJson(Object[] array) { |
239 |
StringBuilder json = new StringBuilder(); |
241 |
if (array != null && array.length > 0 ) { |
242 |
for (Object obj : array) { |
243 |
json.append(objectToJson(obj)); |
246 |
json.setCharAt(json.length() - 1 , ']' ); |
250 |
return json.toString(); |
253 |
public static String dateToJson(Date date){ |
254 |
return date.toString(); |
257 |
public static String numberToJson(Number number) { |
258 |
return number.toString(); |
261 |
public static String booleanToJson(Boolean bool) { |
262 |
return bool.toString(); |
265 |
public static String nullTOJson(){ |
274 |
* @date 2011-7-22 下午02:51:43 |
276 |
public static Boolean isNull(Object arg0){ |
277 |
if (arg0 == null ) return true ; |
278 |
String arg = (String) arg0; |
279 |
return ( "" .equals(arg.trim()) || "null" .equals(arg)) ? true : false ; |
有的方法有重构,其中多了一个参数,其中这个参数的作用是当你一个类有的字段不需要转换的时候,你只需把需要转换的字段属性通过逗号分隔传入就可以了!
|