导包

  1. implementation 'com.alibaba:fastjson:1.2.48'

方法

  1. //FastKtx方法
  2. toAny json 转任意类
  3. toMap json Map
  4. toList : json List
  5. toJson : 任意类转 json
  6. //扩展函数
  7. toAny json 转任意类
  8. toMap json Map
  9. toList : json List
  10. toJson : 任意类转 json

注意事项

使用时涉及到泛型相关,泛型 T 要转的类必须要有无参构造方法,一般 Java 默认就有,如果使用 Kotlin 就需要注意了,设置默认值是无效的,下面这种才有效:

  1. class TestJ constructor(){
  2. var name: String? = null
  3. var isSuccess = false
  4. }

封装类

  1. //json -> any
  2. inline fun <reified T> String?.toAny() = FastKtx.toAny<T>(this)
  3. fun <T> String?.toAny(tClass: Class<T>?) = FastKtx.toAny(this, tClass)
  4. //json -> map
  5. fun <T> String?.toMap() = FastKtx.toMap<Map<String, T>>(this)
  6. //json -> list
  7. inline fun <reified T> String?.toList() = FastKtx.toList<T>(this)
  8. fun <T> String?.toList(tClass: Class<T>?) = FastKtx.toList(this, tClass)
  9. //any -> json
  10. fun Any?.toJson() = FastKtx.toJson(this)
  11. object FastKtx {
  12. /**
  13. *json -----> T
  14. * @param T
  15. * @param json
  16. * @param tClass
  17. * @return
  18. */
  19. inline fun <reified T> toAny(json: String?): T? {
  20. return toAny(json, T::class.java)
  21. }
  22. fun <T> toAny(json: String?, tClass: Class<T>?): T? {
  23. if (json.isNullOrEmpty()) return null
  24. return try {
  25. JSON.parseObject(json, tClass)
  26. } catch (e: Exception) {
  27. null
  28. }
  29. }
  30. /**
  31. *json ----> map
  32. * @param T
  33. * @param json
  34. * @return
  35. */
  36. fun <T> toMap(json: String?): Map<String, T>? {
  37. if (json.isNullOrEmpty()) return null
  38. try {
  39. return JSON.parseObject<Map<String, T>>(json, MutableMap::class.java)
  40. } catch (e: Exception) {
  41. }
  42. return null
  43. }
  44. /**
  45. *json -----> list
  46. * @param T
  47. * @param json
  48. * @param tClass
  49. * @return
  50. */
  51. inline fun <reified T> toList(json: String?): List<T>? {
  52. return toList(json, T::class.java)
  53. }
  54. fun <T> toList(json: String?, tClass: Class<T>?): List<T>? {
  55. if (json.isNullOrEmpty()) return null
  56. return try {
  57. JSON.parseArray(json, tClass)
  58. } catch (e: Exception) {
  59. null
  60. }
  61. }
  62. /**
  63. *any -----> json
  64. * @param any
  65. * @return
  66. */
  67. fun toJson(any: Any?): String? {
  68. return try {
  69. JSON.toJSONString(any)
  70. } catch (e: Exception) {
  71. null
  72. }
  73. }
  74. }