因为fastjson问题,暂时不使用。

引用

  1. <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
  2. <dependency>
  3. <groupId>com.google.code.gson</groupId>
  4. <artifactId>gson</artifactId>
  5. <version>2.8.5</version>
  6. </dependency>

JsonUtil

  1. import com.google.gson.Gson;
  2. import com.google.gson.GsonBuilder;
  3. import com.google.gson.reflect.TypeToken;
  4. import java.util.List;
  5. import java.util.Map;
  6. /**
  7. * json工具类
  8. * https://www.yuque.com/tianyunperfect/ygzsw4/bv1mlg
  9. * <p>
  10. * JsonUtil.getObject(str,JsonHello.class)
  11. *
  12. * @author tianyunperfect
  13. * @date 2020/05/20
  14. */
  15. public class JsonUtil {
  16. private static final Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
  17. public JsonUtil() {
  18. }
  19. /**
  20. * 转换为json字符串
  21. *
  22. * @param object 对象
  23. * @return {@link String}
  24. */
  25. public static String toJsonStr(Object object) {
  26. return gson.toJson(object);
  27. }
  28. /**
  29. * 将json字符串 转换为 普通类
  30. *
  31. * @param jsonStr json str
  32. * @param clazz clazz
  33. * @return {@link T}
  34. */
  35. public static <T> T getObject(String jsonStr, Class<T> clazz) {
  36. return gson.fromJson(jsonStr, clazz);
  37. }
  38. /**
  39. * 支持泛型等复杂类型
  40. * new TypeToken<Result<List<Integer>>>(){}
  41. * new TypeToken<List<Map<String, T>>>() {}
  42. *
  43. * @param jsonString json字符串
  44. * @param typeToken 令牌类型
  45. * @return {@link T}
  46. */
  47. public static <T> T getObject(String jsonString, TypeToken typeToken) {
  48. return gson.fromJson(jsonString, typeToken.getType());
  49. }
  50. /**
  51. * 转为数组
  52. *
  53. * @param jsonString
  54. * @param tClass
  55. * @param <T>
  56. * @return
  57. */
  58. public static <T> T[] getArray(String jsonString, Class<T> tClass) {
  59. return gson.fromJson(jsonString, TypeToken.getArray(tClass).getType());
  60. }
  61. /**
  62. * 转为list
  63. *
  64. * @param jsonString
  65. * @param tClass
  66. * @param <T>
  67. * @return
  68. */
  69. public static <T> List<T> getList(String jsonString, Class<T> tClass) {
  70. return gson.fromJson(jsonString, new TypeToken<List<T>>() {
  71. }.getType());
  72. }
  73. /**
  74. * json字符串转成map的
  75. *
  76. * @param gsonString
  77. * @return
  78. */
  79. public static <T> Map<String, T> getMap(String gsonString) {
  80. return gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
  81. }.getType());
  82. }
  83. }

注意事项

  • 不要有内部类,因为根据字节码无法反解析