JsonUtils.java

前端之家收集整理的这篇文章主要介绍了JsonUtils.java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. package org.noures.framework.modules.util;
  2.  
  3.  
  4. import java.beans.IntrospectionException;
  5. import java.beans.Introspector;
  6. import java.beans.PropertyDescriptor;
  7. import java.text.ParseException;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.HashMap;
  11. import java.util.Iterator;
  12. import java.util.List;
  13. import java.util.Map;
  14. import java.util.Set;
  15.  
  16.  
  17. import net.sf.json.JSONArray;
  18. import net.sf.json.JSONObject;
  19.  
  20.  
  21. /**
  22. * Json工具类,实现了实体类和Json数据格式之间的互转功能 使用实例:<br>
  23. *
  24. * <pre>
  25. * User类:
  26. * package cn.org.jshuwei.j2ee.util.test;
  27. *
  28. * public class User {
  29. * private String userName;
  30. * private String userPass;
  31. * private Integer userAge;
  32. *
  33. * public User(){
  34. *
  35. * }
  36. *
  37. * public User(String userName,String userPass,int userAge) {
  38. * super();
  39. * this.userName = userName;
  40. * this.userPass = userPass;
  41. * this.userAge = userAge;
  42. * }
  43. *
  44. * public String getUserName() {
  45. * return userName;
  46. * }
  47. * public void setUserName(String userName) {
  48. * this.userName = userName;
  49. * }
  50. * public String getUserPass() {
  51. * return userPass;
  52. * }
  53. * public void setUserPass(String userPass) {
  54. * this.userPass = userPass;
  55. * }
  56. * public Integer getUserAge() {
  57. * return userAge;
  58. * }
  59. * public void setUserAge(Integer userAge) {
  60. * this.userAge = userAge;
  61. * }
  62. *
  63. * @Override
  64. * public String toString() {
  65. * return "name->"+this.userName+";pass->"+this.userPass+";age->"+this.userAge;
  66. * }
  67. * }
  68. *
  69. * 测试调用类:
  70. * package cn.org.jshuwei.j2ee.util.test;
  71. *
  72. * import cn.org.jshuwei.j2ee.util.JsonUtils;
  73. *
  74. * public class Test {
  75. *
  76. * public static void main(String[] args) {
  77. * String str1 = "{userName:'huwei',userAge:23,userPass:'123'}";
  78. * String str2 = "[{'userAge':23,'userName':'huwei','userPass':'123'},{'userAge':32,'userName':'jshuwei','userPass':'pass'},{'userAge':'','userName':'userName','userPass':''}]";
  79. * User u = (User)JsonUtils.json2Object(str1,User.class);
  80. * System.out.println("u-->"+u);
  81. * Object[] objs = JsonUtils.json2ObjectArray(str2);
  82. * for(Object obj : objs){
  83. * User u1 = (User)JsonUtils.json2Object(obj.toString(),User.class);
  84. * System.out.println(u1);
  85. * }
  86. * }
  87. * }
  88. *
  89. *
  90. * </pre>
  91. *
  92. * @author huwei(jshuwei.org.cn)
  93. *
  94. */
  95. public class JsonUtils {
  96. /**
  97. * 将一个实体类对象转换成Json数据格式
  98. *
  99. * @param bean
  100. * 需要转换的实体类对象
  101. * @return 转换后的Json格式字符串
  102. */
  103. public static String beanToJson(Object bean) {
  104. StringBuilder json = new StringBuilder();
  105. json.append("{");
  106. PropertyDescriptor[] props = null;
  107. try {
  108. props = Introspector.getBeanInfo(bean.getClass(),Object.class)
  109. .getPropertyDescriptors();
  110. } catch (IntrospectionException e) {
  111. }
  112. if (props != null) {
  113. for (int i = 0; i < props.length; i++) {
  114. try {
  115. String name = objectToJson(props[i].getName());
  116. String value = objectToJson(props[i].getReadMethod()
  117. .invoke(bean));
  118. json.append(name);
  119. json.append(":");
  120. json.append(value);
  121. json.append(",");
  122. } catch (Exception e) {
  123. }
  124. }
  125. json.setCharAt(json.length() - 1,'}');
  126. } else {
  127. json.append("}");
  128. }
  129. return json.toString();
  130. }
  131.  
  132.  
  133. /**
  134. * 将一个List对象转换成Json数据格式返回
  135. *
  136. * @param list
  137. * 需要进行转换的List对象
  138. * @return 转换后的Json数据格式字符串
  139. */
  140. public static String listToJson(List<?> list) {
  141. StringBuilder json = new StringBuilder();
  142. json.append("[");
  143. if (list != null && list.size() > 0) {
  144. for (Object obj : list) {
  145. json.append(objectToJson(obj));
  146. json.append(",");
  147. }
  148. json.setCharAt(json.length() - 1,']');
  149. } else {
  150. json.append("]");
  151. }
  152. return json.toString();
  153. }
  154.  
  155.  
  156. /**
  157. * 将一个对象数组转换成Json数据格式返回
  158. *
  159. * @param array
  160. * 需要进行转换的数组对象
  161. * @return 转换后的Json数据格式字符串
  162. */
  163. public static String arrayToJson(Object[] array) {
  164. StringBuilder json = new StringBuilder();
  165. json.append("[");
  166. if (array != null && array.length > 0) {
  167. for (Object obj : array) {
  168. json.append(objectToJson(obj));
  169. json.append(",']');
  170. } else {
  171. json.append("]");
  172. }
  173. return json.toString();
  174. }
  175.  
  176.  
  177. /**
  178. * 将一个Map对象转换成Json数据格式返回
  179. *
  180. * @param map
  181. * 需要进行转换的Map对象
  182. * @return 转换后的Json数据格式字符串
  183. */
  184. public static String mapToJson(Map<?,?> map) {
  185. StringBuilder json = new StringBuilder();
  186. json.append("{");
  187. if (map != null && map.size() > 0) {
  188. for (Object key : map.keySet()) {
  189. json.append(objectToJson(key));
  190. json.append(":");
  191. json.append(objectToJson(map.get(key)));
  192. json.append(",'}');
  193. } else {
  194. json.append("}");
  195. }
  196. return json.toString();
  197. }
  198.  
  199.  
  200. /**
  201. * 将一个Set对象转换成Json数据格式返回
  202. *
  203. * @param set
  204. * 需要进行转换的Set对象
  205. * @return 转换后的Json数据格式字符串
  206. */
  207. public static String setToJson(Set<?> set) {
  208. StringBuilder json = new StringBuilder();
  209. json.append("[");
  210. if (set != null && set.size() > 0) {
  211. for (Object obj : set) {
  212. json.append(objectToJson(obj));
  213. json.append(",']');
  214. } else {
  215. json.append("]");
  216. }
  217. return json.toString();
  218. }
  219.  
  220.  
  221. private static String numberToJson(Number number) {
  222. return number.toString();
  223. }
  224.  
  225.  
  226. private static String booleanToJson(Boolean bool) {
  227. return bool.toString();
  228. }
  229.  
  230.  
  231. private static String nullToJson() {
  232. return "";
  233. }
  234.  
  235.  
  236. private static String stringToJson(String s) {
  237. if (s == null) {
  238. return nullToJson();
  239. }
  240. StringBuilder sb = new StringBuilder();
  241. for (int i = 0; i < s.length(); i++) {
  242. char ch = s.charAt(i);
  243. switch (ch) {
  244. case '"':
  245. sb.append("\\\"");
  246. break;
  247. case '\\':
  248. sb.append("\\\\");
  249. break;
  250. case '\b':
  251. sb.append("\\b");
  252. break;
  253. case '\f':
  254. sb.append("\\f");
  255. break;
  256. case '\n':
  257. sb.append("\\n");
  258. break;
  259. case '\r':
  260. sb.append("\\r");
  261. break;
  262. case '\t':
  263. sb.append("\\t");
  264. break;
  265. case '/':
  266. sb.append("\\/");
  267. break;
  268. default:
  269. if (ch >= '\u0000' && ch <= '\u001F') {
  270. String ss = Integer.toHexString(ch);
  271. sb.append("\\u");
  272. for (int k = 0; k < 4 - ss.length(); k++) {
  273. sb.append('0');
  274. }
  275. sb.append(ss.toUpperCase());
  276. } else {
  277. sb.append(ch);
  278. }
  279. }
  280. }
  281. return sb.toString();
  282. }
  283.  
  284.  
  285. private static String objectToJson(Object obj) {
  286. StringBuilder json = new StringBuilder();
  287. if (obj == null) {
  288. json.append("\"\"");
  289. } else if (obj instanceof Number) {
  290. json.append(numberToJson((Number) obj));
  291. } else if (obj instanceof Boolean) {
  292. json.append(booleanToJson((Boolean) obj));
  293. } else if (obj instanceof String) {
  294. json.append("\"").append(stringToJson(obj.toString())).append("\"");
  295. } else if (obj instanceof Object[]) {
  296. json.append(arrayToJson((Object[]) obj));
  297. } else if (obj instanceof List) {
  298. json.append(listToJson((List<?>) obj));
  299. } else if (obj instanceof Map) {
  300. json.append(mapToJson((Map<?,?>) obj));
  301. } else if (obj instanceof Set) {
  302. json.append(setToJson((Set<?>) obj));
  303. } else {
  304. json.append(beanToJson(obj));
  305. }
  306. return json.toString();
  307. }
  308.  
  309.  
  310. // ============================================================================================
  311.  
  312.  
  313. /**
  314. * 将Json格式的字符串转换成指定的对象返回
  315. *
  316. * @param jsonString
  317. * Json格式的字符串
  318. * @param pojoCalss
  319. * 转换后的对象类型
  320. * @return 转换后的对象
  321. */
  322. @SuppressWarnings("unchecked")
  323. public static Object json2Object(String jsonString,Class pojoCalss) {
  324. Object pojo;
  325. JSONObject jsonObject = JSONObject.fromObject(jsonString);
  326. pojo = JSONObject.toBean(jsonObject,pojoCalss);
  327. return pojo;
  328. }
  329.  
  330.  
  331. /**
  332. * 将Json格式的字符串转换成Map<String,Object>对象返回
  333. *
  334. * @param jsonString
  335. * 需要进行转换的Json格式字符串
  336. * @return 转换后的Map<String,Object>对象
  337. */
  338. @SuppressWarnings("unchecked")
  339. public static Map<String,Object> json2Map(String jsonString) {
  340. JSONObject jsonObject = JSONObject.fromObject(jsonString);
  341. Iterator keyIter = jsonObject.keys();
  342. String key;
  343. Object value;
  344. Map<String,Object> valueMap = new HashMap<String,Object>();
  345. while (keyIter.hasNext()) {
  346. key = (String) keyIter.next();
  347. value = jsonObject.get(key);
  348. valueMap.put(key,value);
  349. }
  350. return valueMap;
  351. }
  352.  
  353.  
  354. /**
  355. * 将Json格式的字符串转换成对象数组返回
  356. *
  357. * @param jsonString
  358. * 需要进行转换的Json格式字符串
  359. * @return 转换后的对象数组
  360. */
  361. public static Object[] json2ObjectArray(String jsonString) {
  362. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  363. return jsonArray.toArray();
  364. }
  365.  
  366.  
  367. /**
  368. * 将Json格式的字符串转换成指定对象组成的List返回
  369. *
  370. * @param jsonString
  371. * Json格式的字符串
  372. * @param pojoClass
  373. * 转换后的List中对象类型
  374. * @return 转换后的List对象
  375. */
  376. @SuppressWarnings("unchecked")
  377. public static List json2List(String jsonString,Class pojoClass) {
  378. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  379. JSONObject jsonObject;
  380. Object pojoValue;
  381. List list = new ArrayList();
  382. for (int i = 0; i < jsonArray.size(); i++) {
  383. jsonObject = jsonArray.getJSONObject(i);
  384. pojoValue = JSONObject.toBean(jsonObject,pojoClass);
  385. list.add(pojoValue);
  386. }
  387. return list;
  388. }
  389.  
  390.  
  391. /**
  392. * 将Json格式的字符串转换成字符串数组返回
  393. *
  394. * @param jsonString
  395. * 需要进行转换的Json格式字符串
  396. * @return 转换后的字符串数组
  397. */
  398. public static String[] json2StringArray(String jsonString) {
  399. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  400. String[] stringArray = new String[jsonArray.size()];
  401. for (int i = 0; i < jsonArray.size(); i++) {
  402. stringArray[i] = jsonArray.getString(i);
  403. }
  404. return stringArray;
  405. }
  406.  
  407.  
  408. /**
  409. * 将Json格式的字符串转换成Long数组返回
  410. *
  411. * @param jsonString
  412. * 需要进行转换的Json格式字符串
  413. * @return 转换后的Long数组
  414. */
  415. public static Long[] json2LongArray(String jsonString) {
  416. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  417. Long[] longArray = new Long[jsonArray.size()];
  418. for (int i = 0; i < jsonArray.size(); i++) {
  419. longArray[i] = jsonArray.getLong(i);
  420. }
  421. return longArray;
  422. }
  423.  
  424.  
  425. /**
  426. * 将Json格式的字符串转换成Integer数组返回
  427. *
  428. * @param jsonString
  429. * 需要进行转换的Json格式字符串
  430. * @return 转换后的Integer数组
  431. */
  432. public static Integer[] json2IntegerArray(String jsonString) {
  433. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  434. Integer[] integerArray = new Integer[jsonArray.size()];
  435. for (int i = 0; i < jsonArray.size(); i++) {
  436. integerArray[i] = jsonArray.getInt(i);
  437. }
  438. return integerArray;
  439. }
  440.  
  441.  
  442. /**
  443. * 将Json格式的字符串转换成日期数组返回
  444. *
  445. * @param jsonString
  446. * 需要进行转换的Json格式字符串
  447. * @param DataFormat
  448. * 返回的日期格式
  449. * @return 转换后的日期数组
  450. */
  451. public static Date[] json2DateArray(String jsonString,String DataFormat) {
  452. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  453. Date[] dateArray = new Date[jsonArray.size()];
  454. String dateString;
  455. Date date = null;
  456. for (int i = 0; i < jsonArray.size(); i++) {
  457. dateString = jsonArray.getString(i);
  458. try {
  459. date = DateUtil.getDateFromString(dateString,DataFormat);
  460. } catch (ParseException e) {
  461. // TODO Auto-generated catch block
  462. e.printStackTrace();
  463. }
  464. dateArray[i] = date;
  465.  
  466.  
  467. }
  468. return dateArray;
  469. }
  470.  
  471.  
  472. /**
  473. * 将Json格式的字符串转换成Double数组返回
  474. *
  475. * @param jsonString
  476. * 需要进行转换的Json格式字符串
  477. * @return 转换后的Double数组
  478. */
  479. public static Double[] json2DoubleArray(String jsonString) {
  480. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  481. Double[] doubleArray = new Double[jsonArray.size()];
  482. for (int i = 0; i < jsonArray.size(); i++) {
  483. doubleArray[i] = jsonArray.getDouble(i);
  484. }
  485. return doubleArray;
  486. }
  487. }

猜你在找的Json相关文章