亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用Gson的轉換java類型

系統 2313 0

Java代碼 復制代碼
  1. import ?java.util.Iterator; ??
  2. import ?java.util.Collection; ??
  3. import ?java.util.Enumeration; ??
  4. import ?java.lang.reflect.Type; ??
  5. import ?org.apache.commons.logging.Log; ??
  6. import ?org.apache.commons.logging.LogFactory; ??
  7. import ?com.google.gson.Gson; ??
  8. import ?com.google.gson.GsonBuilder; ??
  9. import ?com.google.gson.reflect.TypeToken; ??
  10. /** ?
  11. ?*?包含操作?{@code?JSON}?數據的常用方法的工具類。 ?
  12. ?*?<p> ?
  13. ?*?該工具類使用的?{@code?JSON}?轉換引擎是?<a? ?
  14. ?*?target="_blank">{@code?Google?Gson}</a>。下面是工具類的使用案例: ?
  15. ?*?</p> ?
  16. ?*? ?
  17. ?*?<pre> ?
  18. ?*?public?class?User?{ ?
  19. ?*?????{@literal?@SerializedName("pwd")} ?
  20. ?*?????private?String?password; ?
  21. ?*?????{@literal?@Expose} ?
  22. ?*?????{@literal?@SerializedName("uname")} ?
  23. ?*?????private?String?username; ?
  24. ?*?????{@literal?@Expose} ?
  25. ?*?????{@literal?@Since(1.1)} ?
  26. ?*?????private?String?gender; ?
  27. ?*?????{@literal?@Expose} ?
  28. ?*?????{@literal?@Since(1.0)} ?
  29. ?*?????private?String?sex; ?
  30. ?*????? ?
  31. ?*?????public?User()?{} ?
  32. ?*?????public?User(String?username,?String?password,?String?gender)?{ ?
  33. ?*?????????//?user?constructor?code...?...?... ?
  34. ?*?????} ?
  35. ?*????? ?
  36. ?*?????public?String?getUsername() ?
  37. ?*?????...?...?... ?
  38. ?*?} ?
  39. ?*?List<User>?userList?=?new?LinkedList<User>(); ?
  40. ?*?User?jack?=?new?User("Jack",?"123456",?"Male"); ?
  41. ?*?User?marry?=?new?User("Marry",?"888888",?"Female"); ?
  42. ?*?userList.add(jack); ?
  43. ?*?userList.add(marry); ?
  44. ?*?Type?targetType?=?new?TypeToken<List<User>>(){}.getType(); ?
  45. ?*?String?sUserList1?=?JSONUtils.toJson(userList,?targetType); ?
  46. ?*?sUserList1?---->?[{"uname":"jack","gender":"Male","sex":"Male"},{"uname":"marry","gender":"Female","sex":"Female"}] ?
  47. ?*?String?sUserList2?=?JSONUtils.toJson(userList,?targetType,?false); ?
  48. ?*?sUserList2?---->?[{"uname":"jack","pwd":"123456","gender":"Male","sex":"Male"},{"uname":"marry","pwd":"888888","gender":"Female","sex":"Female"}] ?
  49. ?*?String?sUserList3?=?JSONUtils.toJson(userList,?targetType,?1.0d,?true); ?
  50. ?*?sUserList3?---->?[{"uname":"jack","sex":"Male"},{"uname":"marry","sex":"Female"}] ?
  51. ?*?</pre> ?
  52. ?*? ?
  53. ?*?@author?Fuchun ?
  54. ?*?@version?1.0,?2009-6-27 ?
  55. ?*/ ??
  56. public ? class ?JSONUtils? extends ?Utils?{ ??
  57. ???? @SuppressWarnings ( "unused" ) ??
  58. ???? private ? static ? final ?Log?log?=?LogFactory.getLog(JSONUtils. class ); ??
  59. ???? /**?空的?{@code?JSON}?數據?-?<code>"{}"</code>。?*/ ??
  60. ???? public ? static ? final ?String?EMPTY_JSON?=? "{}" ; ??
  61. ???? /**?空的?{@code?JSON}?數組(集合)數據?-?{@code?"[]"}。?*/ ??
  62. ???? public ? static ? final ?String?EMPTY_JSON_ARRAY?=? "[]" ; ??
  63. ???? /**?默認的?{@code?JSON}?日期/時間字段的格式化模式。?*/ ??
  64. ???? public ? static ? final ?String?DEFAULT_DATE_PATTERN?=? "yyyy-MM-dd?HH:mm:ss?SSS" ; ??
  65. ???? /**?{@code?Google?Gson}?的?{@literal?@Since}?注解常用的版本號常量?-?{@code?1.0}。?*/ ??
  66. ???? public ? static ? final ?Double?SINCE_VERSION_10?=? 1 .0d; ??
  67. ???? /**?{@code?Google?Gson}?的?{@literal?@Since}?注解常用的版本號常量?-?{@code?1.1}。?*/ ??
  68. ???? public ? static ? final ?Double?SINCE_VERSION_11?=? 1 .1d; ??
  69. ???? /**?{@code?Google?Gson}?的?{@literal?@Since}?注解常用的版本號常量?-?{@code?1.2}。?*/ ??
  70. ???? public ? static ? final ?Double?SINCE_VERSION_12?=? 1 .2d; ??
  71. ???? /** ?
  72. ?????*?將給定的目標對象根據指定的條件參數轉換成?{@code?JSON}?格式的字符串。 ?
  73. ?????*?<p?/> ?
  74. ?????*?<strong>該方法轉換發生錯誤時,不會拋出任何異常。若發生錯誤時,曾通對象返回?<code>"{}"</code>; ?
  75. ?????*?集合或數組對象返回?<code>"[]"</code></strong> ?
  76. ?????*? ?
  77. ?????*?@param?target?目標對象。 ?
  78. ?????*?@param?targetType?目標對象的類型。 ?
  79. ?????*?@param?isSerializeNulls?是否序列化?{@code?null}?值字段。 ?
  80. ?????*?@param?version?字段的版本號注解。 ?
  81. ?????*?@param?datePattern?日期字段的格式化模式。 ?
  82. ?????*?@param?excludesFieldsWithoutExpose?是否排除未標注?{@literal?@Expose}?注解的字段。 ?
  83. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  84. ?????*/ ??
  85. ???? public ? static ?String?toJson(Object?target,?Type?targetType,? boolean ?isSerializeNulls, ??
  86. ????????????Double?version,?String?datePattern,? boolean ?excludesFieldsWithoutExpose)?{ ??
  87. ???????? if ?(target?==? null ) ??
  88. ???????????? return ?EMPTY_JSON; ??
  89. ????????GsonBuilder?builder?=? new ?GsonBuilder(); ??
  90. ???????? if ?(isSerializeNulls) ??
  91. ????????????builder.serializeNulls(); ??
  92. ???????? if ?(version?!=? null ) ??
  93. ????????????builder.setVersion(version.doubleValue()); ??
  94. ???????? if ?(isEmpty(datePattern)) ??
  95. ????????????datePattern?=?DEFAULT_DATE_PATTERN; ??
  96. ????????builder.setDateFormat(datePattern); ??
  97. ???????? if ?(excludesFieldsWithoutExpose) ??
  98. ????????????builder.excludeFieldsWithoutExposeAnnotation(); ??
  99. ????????String?result?=?EMPTY; ??
  100. ????????Gson?gson?=?builder.create(); ??
  101. ???????? try ?{ ??
  102. ???????????? if ?(targetType?!=? null )?{ ??
  103. ????????????????result?=?gson.toJson(target,?targetType); ??
  104. ????????????}? else ?{ ??
  105. ????????????????result?=?gson.toJson(target); ??
  106. ????????????} ??
  107. ????????}? catch ?(Exception?ex)?{ ??
  108. ????????????log.warn( "目標對象?" ?+?target.getClass().getName()?+? "?轉換?JSON?字符串時,發生異常!" ,?ex); ??
  109. ???????????? if ?(target? instanceof ?Collection?||?target? instanceof ?Iterator ??
  110. ????????????????????||?target? instanceof ?Enumeration?||?target.getClass().isArray())?{ ??
  111. ????????????????result?=?EMPTY_JSON_ARRAY; ??
  112. ????????????}? else ??
  113. ????????????????result?=?EMPTY_JSON; ??
  114. ????????} ??
  115. ???????? return ?result; ??
  116. ????} ??
  117. ???? /** ?
  118. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法只用來轉換普通的?{@code?JavaBean}?對象。</strong> ?
  119. ?????*?<ul> ?
  120. ?????*?<li>該方法只會轉換標有?{@literal?@Expose}?注解的字段;</li> ?
  121. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  122. ?????*?<li>該方法會轉換所有未標注或已標注?{@literal?@Since}?的字段;</li> ?
  123. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSS};</li> ?
  124. ?????*?</ul> ?
  125. ?????*? ?
  126. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  127. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  128. ?????*/ ??
  129. ???? public ? static ?String?toJson(Object?target)?{ ??
  130. ???????? return ?toJson(target,? null ,? false ,? null ,? null ,? true ); ??
  131. ????} ??
  132. ???? /** ?
  133. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法只用來轉換普通的?{@code?JavaBean}?對象。</strong> ?
  134. ?????*?<ul> ?
  135. ?????*?<li>該方法只會轉換標有?{@literal?@Expose}?注解的字段;</li> ?
  136. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  137. ?????*?<li>該方法會轉換所有未標注或已標注?{@literal?@Since}?的字段;</li> ?
  138. ?????*?</ul> ?
  139. ?????*? ?
  140. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  141. ?????*?@param?datePattern?日期字段的格式化模式。 ?
  142. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  143. ?????*/ ??
  144. ???? public ? static ?String?toJson(Object?target,?String?datePattern)?{ ??
  145. ???????? return ?toJson(target,? null ,? false ,? null ,?datePattern,? true ); ??
  146. ????} ??
  147. ???? /** ?
  148. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法只用來轉換普通的?{@code?JavaBean}?對象。</strong> ?
  149. ?????*?<ul> ?
  150. ?????*?<li>該方法只會轉換標有?{@literal?@Expose}?注解的字段;</li> ?
  151. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  152. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSS};</li> ?
  153. ?????*?</ul> ?
  154. ?????*? ?
  155. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  156. ?????*?@param?version?字段的版本號注解({@literal?@Since})。 ?
  157. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  158. ?????*/ ??
  159. ???? public ? static ?String?toJson(Object?target,?Double?version)?{ ??
  160. ???????? return ?toJson(target,? null ,? false ,?version,? null ,? true ); ??
  161. ????} ??
  162. ???? /** ?
  163. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法只用來轉換普通的?{@code?JavaBean}?對象。</strong> ?
  164. ?????*?<ul> ?
  165. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  166. ?????*?<li>該方法會轉換所有未標注或已標注?{@literal?@Since}?的字段;</li> ?
  167. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSS};</li> ?
  168. ?????*?</ul> ?
  169. ?????*? ?
  170. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  171. ?????*?@param?excludesFieldsWithoutExpose?是否排除未標注?{@literal?@Expose}?注解的字段。 ?
  172. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  173. ?????*/ ??
  174. ???? public ? static ?String?toJson(Object?target,? boolean ?excludesFieldsWithoutExpose)?{ ??
  175. ???????? return ?toJson(target,? null ,? false ,? null ,? null ,?excludesFieldsWithoutExpose); ??
  176. ????} ??
  177. ???? /** ?
  178. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法只用來轉換普通的?{@code?JavaBean}?對象。</strong> ?
  179. ?????*?<ul> ?
  180. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  181. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSS};</li> ?
  182. ?????*?</ul> ?
  183. ?????*? ?
  184. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  185. ?????*?@param?version?字段的版本號注解({@literal?@Since})。 ?
  186. ?????*?@param?excludesFieldsWithoutExpose?是否排除未標注?{@literal?@Expose}?注解的字段。 ?
  187. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  188. ?????*/ ??
  189. ???? public ? static ?String?toJson(Object?target,?Double?version,? boolean ?excludesFieldsWithoutExpose)?{ ??
  190. ???????? return ?toJson(target,? null ,? false ,?version,? null ,?excludesFieldsWithoutExpose); ??
  191. ????} ??
  192. ???? /** ?
  193. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法通常用來轉換使用泛型的對象。</strong> ?
  194. ?????*?<ul> ?
  195. ?????*?<li>該方法只會轉換標有?{@literal?@Expose}?注解的字段;</li> ?
  196. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  197. ?????*?<li>該方法會轉換所有未標注或已標注?{@literal?@Since}?的字段;</li> ?
  198. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSSS};</li> ?
  199. ?????*?</ul> ?
  200. ?????*? ?
  201. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  202. ?????*?@param?targetType?目標對象的類型。 ?
  203. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  204. ?????*/ ??
  205. ???? public ? static ?String?toJson(Object?target,?Type?targetType)?{ ??
  206. ???????? return ?toJson(target,?targetType,? false ,? null ,? null ,? true ); ??
  207. ????} ??
  208. ???? /** ?
  209. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法通常用來轉換使用泛型的對象。</strong> ?
  210. ?????*?<ul> ?
  211. ?????*?<li>該方法只會轉換標有?{@literal?@Expose}?注解的字段;</li> ?
  212. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  213. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSSS};</li> ?
  214. ?????*?</ul> ?
  215. ?????*? ?
  216. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  217. ?????*?@param?targetType?目標對象的類型。 ?
  218. ?????*?@param?version?字段的版本號注解({@literal?@Since})。 ?
  219. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  220. ?????*/ ??
  221. ???? public ? static ?String?toJson(Object?target,?Type?targetType,?Double?version)?{ ??
  222. ???????? return ?toJson(target,?targetType,? false ,?version,? null ,? true ); ??
  223. ????} ??
  224. ???? /** ?
  225. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法通常用來轉換使用泛型的對象。</strong> ?
  226. ?????*?<ul> ?
  227. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  228. ?????*?<li>該方法會轉換所有未標注或已標注?{@literal?@Since}?的字段;</li> ?
  229. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSS};</li> ?
  230. ?????*?</ul> ?
  231. ?????*? ?
  232. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  233. ?????*?@param?targetType?目標對象的類型。 ?
  234. ?????*?@param?excludesFieldsWithoutExpose?是否排除未標注?{@literal?@Expose}?注解的字段。 ?
  235. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  236. ?????*/ ??
  237. ???? public ? static ?String?toJson(Object?target,?Type?targetType,? boolean ?excludesFieldsWithoutExpose)?{ ??
  238. ???????? return ?toJson(target,?targetType,? false ,? null ,? null ,?excludesFieldsWithoutExpose); ??
  239. ????} ??
  240. ???? /** ?
  241. ?????*?將給定的目標對象轉換成?{@code?JSON}?格式的字符串。<strong>此方法通常用來轉換使用泛型的對象。</strong> ?
  242. ?????*?<ul> ?
  243. ?????*?<li>該方法不會轉換?{@code?null}?值字段;</li> ?
  244. ?????*?<li>該方法轉換時使用默認的?日期/時間?格式化模式?-?{@code?yyyy-MM-dd?HH:mm:ss?SSS};</li> ?
  245. ?????*?</ul> ?
  246. ?????*? ?
  247. ?????*?@param?target?要轉換成?{@code?JSON}?的目標對象。 ?
  248. ?????*?@param?targetType?目標對象的類型。 ?
  249. ?????*?@param?version?字段的版本號注解({@literal?@Since})。 ?
  250. ?????*?@param?excludesFieldsWithoutExpose?是否排除未標注?{@literal?@Expose}?注解的字段。 ?
  251. ?????*?@return?目標對象的?{@code?JSON}?格式的字符串。 ?
  252. ?????*/ ??
  253. ???? public ? static ?String?toJson(Object?target,?Type?targetType,?Double?version, ??
  254. ???????????? boolean ?excludesFieldsWithoutExpose)?{ ??
  255. ???????? return ?toJson(target,?targetType,? false ,?version,? null ,?excludesFieldsWithoutExpose); ??
  256. ????} ??
  257. ???? /** ?
  258. ?????*?將給定的?{@code?JSON}?字符串轉換成指定的類型對象。 ?
  259. ?????*? ?
  260. ?????*?@param?<T>?要轉換的目標類型。 ?
  261. ?????*?@param?json?給定的?{@code?JSON}?字符串。 ?
  262. ?????*?@param?token?{@code?com.google.gson.reflect.TypeToken}?的類型指示類對象。 ?
  263. ?????*?@param?datePattern?日期格式模式。 ?
  264. ?????*?@return?給定的?{@code?JSON}?字符串表示的指定的類型對象。 ?
  265. ?????*/ ??
  266. ???? public ? static ?<T>?T?fromJson(String?json,?TypeToken<T>?token,?String?datePattern)?{ ??
  267. ???????? if ?(isEmpty(json))?{ ??
  268. ???????????? return ? null ; ??
  269. ????????} ??
  270. ????????GsonBuilder?builder?=? new ?GsonBuilder(); ??
  271. ???????? if ?(isEmpty(datePattern))?{ ??
  272. ????????????datePattern?=?DEFAULT_DATE_PATTERN; ??
  273. ????????} ??
  274. ????????Gson?gson?=?builder.create(); ??
  275. ???????? try ?{ ??
  276. ???????????? return ?gson.fromJson(json,?token.getType()); ??
  277. ????????}? catch ?(Exception?ex)?{ ??
  278. ????????????log.error(json?+? "?無法轉換為?" ?+?token.getRawType().getName()?+? "?對象!" ,?ex); ??
  279. ???????????? return ? null ; ??
  280. ????????} ??
  281. ????} ??
  282. ???? /** ?
  283. ?????*?將給定的?{@code?JSON}?字符串轉換成指定的類型對象。 ?
  284. ?????*? ?
  285. ?????*?@param?<T>?要轉換的目標類型。 ?
  286. ?????*?@param?json?給定的?{@code?JSON}?字符串。 ?
  287. ?????*?@param?token?{@code?com.google.gson.reflect.TypeToken}?的類型指示類對象。 ?
  288. ?????*?@return?給定的?{@code?JSON}?字符串表示的指定的類型對象。 ?
  289. ?????*/ ??
  290. ???? public ? static ?<T>?T?fromJson(String?json,?TypeToken<T>?token)?{ ??
  291. ???????? return ?fromJson(json,?token,? null ); ??
  292. ????} ??
  293. ???? /** ?
  294. ?????*?將給定的?{@code?JSON}?字符串轉換成指定的類型對象。<strong>此方法通常用來轉換普通的?{@code?JavaBean} ?
  295. ?????*?對象。</strong> ?
  296. ?????*? ?
  297. ?????*?@param?<T>?要轉換的目標類型。 ?
  298. ?????*?@param?json?給定的?{@code?JSON}?字符串。 ?
  299. ?????*?@param?clazz?要轉換的目標類。 ?
  300. ?????*?@param?datePattern?日期格式模式。 ?
  301. ?????*?@return?給定的?{@code?JSON}?字符串表示的指定的類型對象。 ?
  302. ?????*/ ??
  303. ???? public ? static ?<T>?T?fromJson(String?json,?Class<T>?clazz,?String?datePattern)?{ ??
  304. ???????? if ?(isEmpty(json))?{ ??
  305. ???????????? return ? null ; ??
  306. ????????} ??
  307. ????????GsonBuilder?builder?=? new ?GsonBuilder(); ??
  308. ???????? if ?(isEmpty(datePattern))?{ ??
  309. ????????????datePattern?=?DEFAULT_DATE_PATTERN; ??
  310. ????????} ??
  311. ????????Gson?gson?=?builder.create(); ??
  312. ???????? try ?{ ??
  313. ???????????? return ?gson.fromJson(json,?clazz); ??
  314. ????????}? catch ?(Exception?ex)?{ ??
  315. ????????????log.error(json?+? "?無法轉換為?" ?+?clazz.getName()?+? "?對象!" ,?ex); ??
  316. ???????????? return ? null ; ??
  317. ????????} ??
  318. ????} ??
  319. ???? /** ?
  320. ?????*?將給定的?{@code?JSON}?字符串轉換成指定的類型對象。<strong>此方法通常用來轉換普通的?{@code?JavaBean} ?
  321. ?????*?對象。</strong> ?
  322. ?????*? ?
  323. ?????*?@param?<T>?要轉換的目標類型。 ?
  324. ?????*?@param?json?給定的?{@code?JSON}?字符串。 ?
  325. ?????*?@param?clazz?要轉換的目標類。 ?
  326. ?????*?@return?給定的?{@code?JSON}?字符串表示的指定的類型對象。 ?
  327. ?????*/ ??
  328. ???? public ? static ?<T>?T?fromJson(String?json,?Class<T>?clazz)?{ ??
  329. ???????? return ?fromJson(json,?clazz,? null ); ??
  330. ????} ??
  331. }??

使用Gson的轉換java類型


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧国产精品一区综合无码 | 久久天堂网 | 成人免费观看www视频 | 久久九九青青国产精品 | 美国毛片免费观看 | 青草视频在线 | 欧美成人免费毛片 | 亚洲精品中文字幕区 | 韩国xxxx色视频在线观看 | 精品煌色视频网站在线观看 | 神马影院我不卡手机 | 黄色片网站视频 | 一本色道久久综合一区 | 亚洲综合久久综合激情久久 | 欧美精品亚洲精品日韩经典 | 中文字幕一区二区三区四区 | 日韩一区二区国色天香 | 亚洲欧美国产精品专区久久 | japanese乱子欧美 | 免费黄色一级大片 | 国产美女免费观看 | 久草视频在线观 | 国产一区三区二区中文在线 | 亚洲精品国产男人的天堂 | 涩涩在线| 99精品日韩 | 黑人边吃奶边扎下面激情视频 | 色综合久久久高清综合久久久 | 日韩国产欧美在线观看 | 豆国产96在线 | 亚洲 | h视频网站在线观看 | 日韩中文字幕免费在线观看 | 夜夜夜夜夜夜夜工噜噜噜 | 国产伦精品一区三区视频 | 尤物视频在线观看视频 | 色网站综合 | 日本一区二区三区免费高清在线 | 免费两性的视频网站 | 国产精品真实对白精彩久久 | 国产亚洲欧美另类一区二区三区 | 色婷婷激婷婷深爱五月小蛇 |