加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

JSONUtils 工具类

发布时间:2020-12-16 19:39:15 所属栏目:百科 来源:网络整理
导读:在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作。但是我们更习惯将其进一步封装,达到更好的重用。 封装后的JSON工具类JSONUtils.java代码如下: import java . util ArrayList ; Collection ; Ha

在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作。但是我们更习惯将其进一步封装,达到更好的重用。

封装后的JSON工具类JSONUtils.java代码如下:

  1. importjava.utilArrayList;
  2. Collection;
  3. HashMapIteratorListMapnet.sf.json.JSONArray.JSONObjectorg.apache.commons.beanutils.BeanUtils;

  4. publicclassJSONUtils
  5. {
  6. /**
  7. *
  8. * @author wangwei JSON工具类
  9. * @param
  10. *
  11. */

  12. /***
  13. * 将List对象序列化为JSON文本
  14. */
  15. static<T>StringtoJSONString(list)
  16. {
  17. JSONArray jsonArray=JSONArray.fromObject)returnjsonArraytoString(}

  18. /***
  19. * 将对象序列化为JSON文本
  20. * @param object
  21. * @return
  22. */
  23. staticObjectobject/***
  24. * 将JSON对象数组序列化为JSON文本
  25. * @param jsonArray
  26. * @return
  27. */
  28. (JSONArray jsonArray{
  29. /***
  30. * 将JSON对象序列化为JSON文本
  31. * @param jsonObject
  32. * @return
  33. */
  34. (JSONObject jsonObjectreturnjsonObject/***
  35. * 将对象转换为List对象
  36. * @param object
  37. * @return
  38. */
  39. ListtoArrayListListarrayList=new;

  40. JSONArray jsonArray;

  41. Iteratorit=jsonArrayiteratorwhile(ithasNext{
  42. JSONObject jsonObject(JSONObject)itnextIteratorkeys=jsonObjectkey=;
  43. valuegetadd}
  44. }

  45. return/***
  46. * 将对象转换为Collection对象
  47. * @param object
  48. * @return
  49. */
  50. CollectiontoCollectionreturnJSONArray(jsonArray/***
  51. * 将对象转换为JSON对象数组
  52. * @param object
  53. * @return
  54. */
  55. staticJSONArray toJSONArray/***
  56. * 将对象转换为JSON对象
  57. * @param object
  58. * @return
  59. */
  60. staticJSONObject toJSONObjectreturnJSONObject/***
  61. * 将对象转换为HashMap
  62. * @param object
  63. * @return
  64. */
  65. HashMaptoHashMap<String,Object>data>;
  66. JSONObject jsonObject=JSONUtils.toJSONObjectStringvalueOf;
  67. dataputreturndata/***
  68. * 将对象转换为List<map>
  69. * @param object
  70. * @return
  71. */
  72. // 返回非实体类型(Map)的List
  73. >toList;
  74. JSONArray jsonArrayforObjectobj:jsonArray)objmap)}
  75. /***
  76. * 将JSON对象数组转换为传入类型的List
  77. * @param
  78. * @param jsonArray
  79. * @param objectClass
  80. * @return
  81. */
  82. Class>objectClass.toList/***
  83. * 将对象转换为传入类型的List
  84. * @param
  85. * @param jsonArray
  86. * @param objectClass
  87. * @return
  88. */
  89. /***
  90. * 将JSON对象转换为传入类型的对象
  91. * @param
  92. * @param jsonObject
  93. * @param beanClass
  94. * @return
  95. */
  96. >T toBean>beanClassreturn(T)JSONObject.toBean(jsonObject/***
  97. * 将将对象转换为传入类型的对象
  98. * @param
  99. * @param object
  100. * @param beanClass
  101. * @return
  102. */
  103. =JSONObject/***
  104. * 将JSON文本反序列化为主从关系的实体
  105. * @param泛型T 代表主实体类型
  106. * @param泛型D 代表从实体类型
  107. * @param jsonString JSON文本
  108. * @param mainClass 主实体类型
  109. * @param detailName 从实体类在主实体类中的属性名称
  110. * @param detailClass 从实体类型
  111. * @return
  112. */
  113. StringjsonString>mainClass
  114. StringdetailName<D>detailClass(jsonString(JSONArray)jsonObject(detailName;

  115. T mainEntity>detailListtry
  116. {
  117. BeanUtilssetProperty(mainEntitydetailListcatchExceptionexthrowRuntimeException"主从关系JSON反序列化实体失败!"returnmainEntity/***
  118. * 将JSON文本反序列化为主从关系的实体
  119. * @param泛型T 代表主实体类型
  120. * @param泛型D1 代表从实体类型
  121. * @param泛型D2 代表从实体类型
  122. * @param jsonString JSON文本
  123. * @param mainClass 主实体类型
  124. * @param detailName1 从实体类在主实体类中的属性
  125. * @param detailClass1 从实体类型
  126. * @param detailName2 从实体类在主实体类中的属性
  127. * @param detailClass2 从实体类型
  128. * @return
  129. */
  130. D2StringdetailName1<D1>detailClass1StringdetailName2
  131. <D2>detailClass2;
  132. JSONArray jsonArray1(detailName1;
  133. JSONArray jsonArray2(detailName2>detailList1(jsonArray1>detailList2(jsonArray2detailName1;
  134. BeanUtilsdetailList2/***
  135. * 将JSON文本反序列化为主从关系的实体
  136. * @param泛型T 代表主实体类型
  137. * @param泛型D1 代表从实体类型
  138. * @param泛型D2 代表从实体类型
  139. * @param jsonString JSON文本
  140. * @param mainClass 主实体类型
  141. * @param detailName1 从实体类在主实体类中的属性
  142. * @param detailClass1 从实体类型
  143. * @param detailName2 从实体类在主实体类中的属性
  144. * @param detailClass2 从实体类型
  145. * @param detailName3 从实体类在主实体类中的属性
  146. * @param detailClass3 从实体类型
  147. * @return
  148. */
  149. StringdetailName3<D3>detailClass3;
  150. JSONArray jsonArray3(detailName3>detailList3(jsonArray3detailName3/***
  151. * 将JSON文本反序列化为主从关系的实体
  152. * @param主实体类型
  153. * @param jsonString JSON文本
  154. * @param mainClass 主实体类型
  155. * @param detailClass 存放了多个从实体在主实体中属性名称和类型
  156. * @return
  157. */
  158. ;
  159. T mainEntity:detailClasskeySetClass)detailClass}

上面代码中所需的jar包有:json-lib-2.3-jdk15.jar,commons-beanutils-1.8.0.jar

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读