分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

总结的一些json格式和对象/String/Map/List等的互转工具类

发布时间:2023-09-06 01:51责任编辑:郭大石关键词:jsjson

总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar、jackson-jaxrs-1.7.1.jar、jackson-mapper-asl-1.7.1.jar这三个jar包

  1. packagecom.zuidaima.util.json;
  2. importjava.io.InputStream;
  3. importjava.io.OutputStream;
  4. importjava.io.Reader;
  5. importjava.io.Writer;
  6. importjava.net.URL;
  7. importjava.util.ArrayList;
  8. importjava.util.Date;
  9. importjava.util.HashMap;
  10. importjava.util.List;
  11. importjava.util.Map;
  12. importorg.codehaus.jackson.JsonNode;
  13. importorg.codehaus.jackson.map.DeserializationConfig;
  14. importorg.codehaus.jackson.map.ObjectMapper;
  15. importorg.codehaus.jackson.map.annotate.JsonSerialize;
  16. importorg.codehaus.jackson.map.type.TypeFactory;
  17. publicclassJsonUtil{
  18. privatestaticObjectMappermapper=newObjectMapper();
  19. static{
  20. /**
  21. *反序列化时忽略多余的属性
  22. */
  23. mapper.getDeserializationConfig().set(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
  24. /**
  25. *忽略Null的值,节省空间.
  26. */
  27. mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
  28. /**
  29. *忽略Default值木有变化的属性,更节省空间,用于接收方有相同的Class
  30. *如int属性初始值为0,那么这个属性将不会被序列化
  31. */
  32. mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT);
  33. }
  34. /**
  35. *
  36. *@Title:isJSON
  37. *@authorkaka
  38. *@Description:判断jsonString是否可以转换成json格式
  39. *@param@paramjsonString
  40. *@param@return
  41. *@returnboolean
  42. *@throws
  43. */
  44. publicstaticbooleanisJSON(StringjsonString){
  45. returnmapper.canSerialize(HashMap.class);
  46. }
  47. publicstatic<V>Map<String,V>toMap(Stringcontent,Class<?extendsV>clazz)throwsException{
  48. returnmapper.readValue(content,TypeFactory.mapType(HashMap.class,String.class,clazz));
  49. }
  50. publicstatic<V>Map<String,V>toMap(InputStreamis,Class<?extendsV>clazz)throwsException{
  51. returnmapper.readValue(is,TypeFactory.mapType(HashMap.class,String.class,clazz));
  52. }
  53. publicstatic<V>Map<String,V>toMap(Readeris,Class<?extendsV>clazz)throwsException{
  54. returnmapper.readValue(is,TypeFactory.mapType(HashMap.class,String.class,clazz));
  55. }
  56. publicstatic<V>Map<String,V>toMap(URLis,Class<?extendsV>clazz)throwsException{
  57. returnmapper.readValue(is,TypeFactory.mapType(HashMap.class,String.class,clazz));
  58. }
  59. publicstatic<E>List<E>toList(Stringcontent,Class<?extendsE>clazz)throwsException{
  60. returnjsonToList(content,clazz);
  61. }
  62. /**
  63. *
  64. *@Title:jsonToList
  65. *@authorkaka
  66. *@Description:json转list,List的元素类型,会一并转换完成如List<User>
  67. *@param@param<E>
  68. *@param@paramcontent
  69. *@param@paramclazz
  70. *@param@return元素类型为E的List
  71. *@param@throwsException
  72. *@returnList<E>
  73. *@throws
  74. */
  75. publicstatic<E>List<E>jsonToList(Stringcontent,Class<?extendsE>clazz)throwsException{
  76. returnmapper.readValue(content,TypeFactory.collectionType(ArrayList.class,clazz));
  77. }
  78. /**
  79. *
  80. *@Title:jsonToIntArray
  81. *@authorkaka
  82. *@Description:json转整形数组
  83. *@param@paramcontent
  84. *@param@return
  85. *@param@throwsException
  86. *@returnInteger[]
  87. *@throws
  88. */
  89. publicstaticInteger[]jsonToIntArray(Stringcontent)throwsException{
  90. returnjsonToArray(content,Integer.class);
  91. }
  92. publicstaticInteger[]jsonToIntArray(Stringcontent,Stringkey)throwsException{
  93. returnjsonToArray(content,key,Integer.class);
  94. }
  95. /**
  96. *
  97. *@Title:jsonToArray
  98. *@authorkaka
  99. *@Description:json转对象数组
  100. *@param@param<E>
  101. *@param@paramcontent
  102. *@param@paramclazz数组中的对象类型
  103. *@param@returnE类型的数组,如User[]
  104. *@param@throwsException
  105. *@returnE[]
  106. *@throws
  107. */
  108. publicstatic<E>E[]jsonToArray(Stringcontent,Class<?extendsE>clazz)throwsException{
  109. if(content!=null){
  110. returnmapper.readValue(content,TypeFactory.arrayType(clazz));
  111. }else{
  112. returnnull;
  113. }
  114. }
  115. /**
  116. *
  117. *@Title:fromJsonToObject
  118. *@authorkaka
  119. *@Description:json转java对象,为兼容原util类
  120. *@param@param<T>
  121. *@param@paramcontent
  122. *@param@paramclazz目标类型
  123. *@param@return
  124. *@param@throwsException
  125. *@returnT返回类型为T的对象
  126. *@throws
  127. */
  128. publicstatic<T>TfromJsonToObject(Stringcontent,Class<?extendsT>clazz)throwsException{
  129. returnjsonToObject(content,clazz);
  130. }
  131. publicstatic<T>TjsonToObject(Stringcontent,Class<?extendsT>clazz)throwsException{
  132. returnmapper.readValue(content,clazz);
  133. }
  134. /**
  135. *
  136. *@Title:jsonToObject
  137. *@authorkaka
  138. *@Description:一个jsonStr包含多个java对象,取其中一个转化为java对象的方法
  139. *@param@param<T>
  140. *@param@paramcontentjson格式的字符串
  141. *@param@paramkey要转换的子json串的key
  142. *@param@paramclazz目标类型
  143. *@param@return返回类型为T的对象
  144. *@param@throwsException
  145. *@returnT
  146. *@throws
  147. */
  148. publicstatic<T>TjsonToObject(Stringcontent,Stringkey,Class<?extendsT>clazz)throwsException{
  149. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  150. JsonNodepath=rootNode.path(key);
  151. if(!path.isMissingNode()){
  152. returnjsonToObject(path.toString(),clazz);
  153. }else{
  154. returnnull;
  155. }
  156. }
  157. publicstaticIntegergetInt(Stringcontent,Stringkey)throwsException{
  158. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  159. JsonNodepath=rootNode.path(key);
  160. if(!path.isMissingNode()){
  161. returnjsonToObject(path.toString(),Integer.class);
  162. }else{
  163. returnnull;
  164. }
  165. }
  166. publicstaticStringgetString(Stringcontent,Stringkey)throwsException{
  167. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  168. JsonNodepath=rootNode.path(key);
  169. if(!path.isMissingNode()){
  170. returnjsonToObject(rootNode.path(key).toString(),String.class);
  171. }else{
  172. returnnull;
  173. }
  174. }
  175. publicstaticDategetDate(Stringcontent,Stringkey)throwsException{
  176. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  177. JsonNodepath=rootNode.path(key);
  178. if(!path.isMissingNode()){
  179. returnjsonToObject(path.toString(),Date.class);
  180. }else{
  181. returnnull;
  182. }
  183. }
  184. /**
  185. *一个jsonStr包含多个java对象,将指定的key的json转化为对象数组的方法
  186. *@paramcontent原始的json串
  187. *@paramkey要转换的部分
  188. *@paramclazz目标类型
  189. *@return目标类型的对象数组
  190. *@throwsException
  191. */
  192. publicstatic<E>E[]jsonToArray(Stringcontent,Stringkey,Class<?extendsE>clazz)throwsException{
  193. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  194. JsonNodepath=rootNode.path(key);
  195. if(!path.isMissingNode()){
  196. returnjsonToArray(rootNode.path(key).toString(),clazz);
  197. }else{
  198. returnnull;
  199. }
  200. }
  201. publicstaticInteger[]jsonToArray(Stringcontent,Stringkey)throwsException{
  202. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  203. JsonNodepath=rootNode.path(key);
  204. if(!path.isMissingNode()){
  205. returnjsonToArray(path.toString(),Integer.class);
  206. }else{
  207. returnnull;
  208. }
  209. }
  210. /**
  211. *
  212. *@Title:jsonToList
  213. *@authorkaka
  214. *@Description:一个jsonStr包含多个java对象,将指定的key的json转化为List<E>的方法
  215. *@param@param<E>
  216. *@param@paramcontent原始的json串
  217. *@param@paramkey要转换的那部分json
  218. *@param@paramclazz目标类型
  219. *@param@return元素为目标类型的List
  220. *@param@throwsException
  221. *@returnList<E>
  222. *@throws
  223. */
  224. publicstatic<E>List<E>jsonToList(Stringcontent,Stringkey,Class<?extendsE>clazz)throwsException{
  225. JsonNoderootNode=mapper.readValue(content,JsonNode.class);
  226. JsonNodepath=rootNode.path(key);
  227. if(!path.isMissingNode()){
  228. returntoList(path.toString(),clazz);
  229. }else{
  230. returnnull;
  231. }
  232. }
  233. /**
  234. *
  235. *@Title:toJson
  236. *@authorkaka
  237. *@Description:对象转化成json,已知问题AaBbb中有a,a中有b,如果a和b同在一个o中将不能正常转化
  238. *@param@paramo要转换的对象
  239. *@param@returnjson格式的字符串
  240. *@param@throwsException
  241. *@returnString
  242. *@throws
  243. */
  244. publicstaticStringtoJson(Objecto)throwsException{
  245. returnmapper.writeValueAsString(o);
  246. }
  247. /**
  248. *
  249. *@Title:toJson
  250. *@authorkaka
  251. *@Description:转换成json串到out
  252. *@param@paramout
  253. *@param@paramo
  254. *@param@throwsException
  255. *@returnvoid
  256. *@throws
  257. */
  258. publicstaticvoidtoJson(OutputStreamout,Objecto)throwsException{
  259. mapper.writeValue(out,o);
  260. }
  261. /**
  262. *
  263. *@Title:toJson
  264. *@authorkaka
  265. *@Description:转换成json串到writer
  266. *@param@paramout
  267. *@param@paramo
  268. *@param@throwsException
  269. *@returnvoid
  270. *@throws
  271. */
  272. publicstaticvoidtoJson(Writerout,Objecto)throwsException{
  273. mapper.writeValue(out,o);
  274. }
  275. publicstaticStringmap2Json(Mapmap)throwsException{
  276. returntoJson(map);
  277. }
  278. /**
  279. *
  280. *@Title:formatJson
  281. *@authorkaka
  282. *@Description:json字符串的格式化
  283. *@param@paramjson
  284. *@param@paramfillStringUnit
  285. *@param@return
  286. *@returnString
  287. *@throws
  288. */
  289. publicstaticStringformatJson(Stringjson,StringfillStringUnit){
  290. if(json==null||json.trim().length()==0){
  291. returnnull;
  292. }
  293. intfixedLenth=0;
  294. ArrayList<String>tokenList=newArrayList<String>();
  295. {
  296. StringjsonTemp=json;
  297. //预读取
  298. while(jsonTemp.length()>0){
  299. Stringtoken=getToken(jsonTemp);
  300. jsonTemp=jsonTemp.substring(token.length());
  301. token=token.trim();
  302. tokenList.add(token);
  303. }
  304. }
  305. for(inti=0;i<tokenList.size();i++){
  306. Stringtoken=tokenList.get(i);
  307. intlength=token.getBytes().length;
  308. if(length>fixedLenth&&i<tokenList.size()-1&&tokenList.get(i+1).equals(":")){
  309. fixedLenth&nbs
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved