1. import java.beans.Introspector;
  2. import java.beans.PropertyDescriptor;
  3. import java.math.BigDecimal;
  4. import java.math.BigInteger;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Set;
  11.  
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.json.simple.JSONArray;
  14. import org.json.simple.JSONObject;
  15. import org.json.simple.parser.JSONParser;
  16. import org.json.simple.parser.ParseException;
  17.  
  18. /**
  19. * JSONUtil.java
  20. *
  21. * Date: 2013-7-19 下午3:30:55
  22. * Version: 1.0
  23. *
  24. * Copyright(c) 2013 by Highershine
  25. */
  26. /**
  27. * <p>
  28. * 类/接口 定义
  29. * </p>
  30. *
  31. * 类/接口作用...
  32. *
  33. * @author starwing
  34. *
  35. */
  36. public class JSONUtil {
  37. private static JSONParser parser;
  38.  
  39. /**
  40. * 将Json字符串解析为Map
  41. * @param jsonString
  42. * @return
  43. * @throws ParseException
  44. */
  45. @SuppressWarnings("unchecked")
  46. public static Map<String,Object> parseJsonToMap(String jsonString)
  47. throws ParseException{
  48. Map<String,Object> result = null;
  49. if(parser == null){
  50. parser = new JSONParser();
  51. }
  52. if(!StringUtils.isEmpty(jsonString)){
  53. result = (Map<String,Object>)parser.parse(jsonString);
  54. }
  55. return result;
  56. }
  57.  
  58. /**
  59. * 将json字符串解析为List
  60. * @param jsonString
  61. * @return
  62. * @throws ParseException
  63. */
  64. @SuppressWarnings("unchecked")
  65. public static List<Object> parseJsonToList(String jsonString)
  66. throws ParseException{
  67. List<Object> result = null;
  68. if(parser == null){
  69. parser = new JSONParser();
  70. }
  71. if(!StringUtils.isEmpty(jsonString)){
  72. try{
  73. result = (List<Object>)parser.parse(jsonString);
  74. }catch(ParseException e){
  75. System.out.println(e.getMessage());
  76. throw e;
  77. }
  78. }
  79. return result;
  80. }
  81. /**
  82. * 将Json字符串转换为Map
  83. * @param jsonString
  84. * @return
  85. * @throws ParseException
  86. */
  87. public static Map<String, String> JSONParser(String jsonString)
  88. throws ParseException {
  89. JSONParser parser = new JSONParser();
  90. JSONArray jsonArray = (JSONArray) parser.parse(jsonString);
  91.  
  92. HashMap<String, String> map = new HashMap<String, String>();
  93. for (int i = 0; i < jsonArray.size(); i++) {
  94. JSONObject obj = (JSONObject) jsonArray.get(i);
  95. // if (!"".equals(obj.get("value").toString().trim())) {
  96. map.put(obj.get("name").toString(), obj.get("value").toString());
  97.  
  98. // }
  99. }
  100. return map;
  101. }
  102.  
  103. /**
  104. * 将对象转换为Json字符串
  105. * <br>主方法
  106. * @param obj
  107. * @return
  108. */
  109. @SuppressWarnings("unchecked")
  110. public static String objectTojson(Object obj) {
  111. StringBuilder json = new StringBuilder();
  112. if (obj == null) {
  113. json.append("\"\"");
  114. } else if (obj instanceof String || obj instanceof Integer
  115. || obj instanceof Float || obj instanceof Boolean
  116. || obj instanceof Short || obj instanceof Double
  117. || obj instanceof Long || obj instanceof BigDecimal
  118. || obj instanceof BigInteger || obj instanceof Byte) {
  119. json.append("\"").append(stringTojson(obj.toString())).append("\"");
  120. } else if (obj instanceof Object[]) {
  121. json.append(arrayTojson((Object[]) obj));
  122. } else if (obj instanceof List) {
  123. json.append(listTojson((List<?>) obj));
  124. } else if (obj instanceof Map) {
  125. json.append(mapTojson((Map<?, ?>) obj));
  126. } else if (obj instanceof Set) {
  127. json.append(setTojson((Set<?>) obj));
  128. } else {
  129. json.append(beanTojson(obj));
  130. }
  131. return json.toString();
  132. }
  133.  
  134. /**
  135. * Map转换为Json字符串
  136. *<p> 注意:Value值会被转成String类型。
  137. * @param map
  138. * @return
  139. */
  140. public static String mapTojson(Map<?, ?> map) {
  141. StringBuilder json = new StringBuilder();
  142. json.append("{");
  143. if (map != null && map.size() > 0) {
  144. for (Object key : map.keySet()) {
  145. json.append(objectTojson(key));
  146. json.append(":");
  147. json.append(objectTojson(map.get(key)));
  148. json.append(",");
  149. }
  150. json.setCharAt(json.length() - 1, '}');
  151. } else {
  152. json.append("}");
  153. }
  154. return json.toString();
  155. }
  156.  
  157. /**
  158. * 数组转换为Json字符串
  159. * @param array
  160. * @return
  161. */
  162. public static String arrayTojson(Object[] array) {
  163. StringBuilder json = new StringBuilder();
  164. json.append("[");
  165. if (array != null && array.length > 0) {
  166. for (Object obj : array) {
  167. json.append(objectTojson(obj));
  168. json.append(",");
  169. }
  170. json.setCharAt(json.length() - 1, ']');
  171. } else {
  172. json.append("]");
  173. }
  174. return json.toString();
  175. }
  176.  
  177. /**
  178. * List转换为Json字符串
  179. * @param list
  180. * @return
  181. */
  182. public static String listTojson(List<?> list) {
  183. StringBuilder json = new StringBuilder();
  184. json.append("[");
  185. if (list != null && list.size() > 0) {
  186. for (Object obj : list) {
  187. json.append(objectTojson(obj));
  188. json.append(",");
  189. }
  190. json.setCharAt(json.length() - 1, ']');
  191. } else {
  192. json.append("]");
  193. }
  194. return json.toString();
  195. }
  196.  
  197. /**
  198. * SET集合转换为json字符串
  199. * @param set
  200. * @return
  201. */
  202. public static String setTojson(Set<?> set) {
  203. StringBuilder json = new StringBuilder();
  204. json.append("[");
  205. if (set != null && set.size() > 0) {
  206. for (Object obj : set) {
  207. json.append(objectTojson(obj));
  208. json.append(",");
  209. }
  210. json.setCharAt(json.length() - 1, ']');
  211. } else {
  212. json.append("]");
  213. }
  214. return json.toString();
  215. }
  216.  
  217. /**
  218. * Bean实体转换为Json字符串
  219. * @param bean
  220. * @return
  221. */
  222. public static String beanTojson(Object bean) {
  223. StringBuilder json = new StringBuilder();
  224. json.append("{");
  225. PropertyDescriptor[] props = null;
  226. try {
  227. props = Introspector.getBeanInfo(bean.getClass(), Object.class)
  228. .getPropertyDescriptors();
  229. } catch (IntrospectionException e) {
  230. }
  231. if (props != null) {
  232. for (int i = 0; i < props.length; i++) {
  233. try {
  234. String name = objectTojson(props[i].getName());
  235. String value = objectTojson(props[i].getReadMethod()
  236. .invoke(bean));
  237. json.append(name);
  238. json.append(":");
  239. json.append(value);
  240. json.append(",");
  241. } catch (Exception e) {
  242. System.err.println(e.getMessage());
  243. }
  244. }
  245. json.setCharAt(json.length() - 1, '}');
  246. } else {
  247. json.append("}");
  248. }
  249. return json.toString();
  250. }
  251.  
  252. /**
  253. * 字符串转为Json字符串
  254. * @param s
  255. * @return
  256. */
  257. public static String stringTojson(String s) {
  258. if (s == null)
  259. return "";
  260. StringBuilder sb = new StringBuilder();
  261. for (int i = 0; i < s.length(); i++) {
  262. char ch = s.charAt(i);
  263. switch (ch) {
  264. case '"':
  265. sb.append("\\\"");
  266. break;
  267. case '\\':
  268. sb.append("\\\\");
  269. break;
  270. case '\b':
  271. sb.append("\\b");
  272. break;
  273. case '\f':
  274. sb.append("\\f");
  275. break;
  276. case '\n':
  277. sb.append("\\n");
  278. break;
  279. case '\r':
  280. sb.append("\\r");
  281. break;
  282. case '\t':
  283. sb.append("\\t");
  284. break;
  285. case '/':
  286. sb.append("\\/");
  287. break;
  288. default:
  289. if (ch >= '\u0000' && ch <= '\u001F') {
  290. String ss = Integer.toHexString(ch);
  291. sb.append("\\u");
  292. for (int k = 0; k < 4 - ss.length(); k++) {
  293. sb.append('0');
  294. }
  295. sb.append(ss.toUpperCase());
  296. } else {
  297. sb.append(ch);
  298. }
  299. }
  300. }
  301. return sb.toString();
  302. }
  303.  
  304. }

【转换】Bean、List、Map、Array、String与JSON字符串的相互转换的更多相关文章

  1. JSON对象、JSON字符串的相互转换

    JSON对象.JSON字符串的相互转换 json的格式: 第一种方式: 单一的json字符串,转换成json对象时,需要 eval('(' + json + ')');这样的格式,中间需要加括号 va ...

  2. Go 结构体和map等数据结构转json字符串

    Go语言中使用json包中的 Marshal() 函数将数据结构转成json字符串,源代码: func Marshal(v interface{}) ([]byte, error) { e := ne ...

  3. JavaScript对象与JSON字符串的相互转换

    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集.正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中. eval函数 ...

  4. javascript:json对象和json字符串的相互转换

    json对象和字符串的相互转换 //使用json中的parser方法转换: var str='{"name":"fendouer", "age&quo ...

  5. Array(数组)与Json String (Json字符串) 的相互转换

    1.Array转换成Json String             function jsonToString(arr) {             var s = "";     ...

  6. c# string.format json字符串 formatException错误

    正常字符串的string.format是没问题的但是在拼接json的字符串的时候因为里面包含了 {}  花括号 里面又嵌套了 {0} {1} {2}这些要替换的关键字 所以会报错. 经过百度. 字符串 ...

  7. fastjson string[]转 json字符串

    @RequestMapping(value = "/friendlink_list/province_list", produces = {"application/js ...

  8. 如何使用 window api 转换字符集?(std::string与std::wstring的相互转换)

    //宽字符转多字节 std::string W2A(const std::wstring& utf8) { int buffSize = WideCharToMultiByte(CP_ACP, ...

  9. 前端中JSON对象和JSON字符串的相互转换

    资料来源: http://www.css88.com/archives/3919

随机推荐

  1. pycharm安装jpype报错及解决方法

    安装jpype时发生报错: 按照提示去装了Microsoft visual C++,结果重新安装还是报错,根据https://blog.csdn.net/qq_38934189/article/det ...

  2. laravel中的Contracts, ServiceContainer, ServiceProvider, Facades关系

    Contracts, ServiceContainer, ServiceProvider, Facades  Contracts 合同,契约,也就是接口,定义一些规则,每个实现此接口的都要实现里面的方 ...

  3. Angular js Radio Button

    症状: 绑定一个list   radio button 老是只能绑定一行,纠结了很久 ,回家发现  原来是 name 用了同一个  ,坑啊,记录下 免得下次再犯. 之前的代码 <ul> & ...

  4. Atcoder arc080E Young Maids(线段树+优先队列)

    给出一个n排列,每次可以选择相邻的两个数字放在新的排列首部,问最后形成的新的排列字典序最小是? 考虑新排列的第一个数字,则应是下标为奇数的最小数,下标不妨设为i.第二个数字应该下标大于i且为偶数的最小 ...

  5. GDOI2018记录

    ​ 说实话,直到初三暑假升高一的时候,我才开始形成竞赛观.那时才顿觉一年的各个比赛是多么重要. ​ 紧接着我的NOIP就直接爆炸了.这意味着我一年也完蛋了.各种人去WC,然后我留在家里. ​ 那GDO ...

  6. loj2542 「PKUWC2018」随机游走 【树形dp + 状压dp + 数学】

    题目链接 loj2542 题解 设\(f[i][S]\)表示从\(i\)节点出发,走完\(S\)集合中的点的期望步数 记\(de[i]\)为\(i\)的度数,\(E\)为边集,我们很容易写出状态转移方 ...

  7. AC自动机【萌新文章】

    我这个蒟蒻第一次写博客,有点小激动呢. 主要是最近刚学了AC自动机,学得糟糟糕糕,记录一下,看到dalao们都在写博客,决定自己也写一波[我好水的啦,写的也不好] AC自动机大概就是    Trie+ ...

  8. 【poj3420】 Quad Tiling

    http://poj.org/problem?id=3420 (题目链接) 题意 给出$n*m$的网格,用$1*2$的方块覆盖有多少种方案. Solution 数据很大,不能直接搞了,我们矩乘一下.0 ...

  9. bzoj 2300 : [HAOI2011]防线修建

    set动态维护凸包 #include<iostream> #include<cstdio> #include<cstring> #include<algori ...

  10. git<撤销本地修改与回退版本>

    1. 使用 git checkout 撤销本地修改 即放弃对本地已修改但尚未提交的文件的修改,还原其到未修改前的状态. 注意: 已 add/ commit 的文件不适用个方法,应该用本文提到的第二种方 ...