elunez / eladmin

eladmin jpa 版本:项目基于 Spring Boot 2.6.4、 Jpa、 Spring Security、Redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由
https://eladmin.vip/demo
Apache License 2.0
21.19k stars 7.34k forks source link

关于JSON组件的问题 #657

Closed canbingzt closed 1 year ago

canbingzt commented 3 years ago

系统内目前有3套JSON组件

  1. SpringBoot自带的Jackson
  2. fastjson
  3. Hutool包含的JSONUtil

目前我发现的问题有以下几点

  1. 目前系统内有部分序列化/反序列化使用的是Hutool,比如SecurityUtils里的getCurrentUserId()getCurrentUserDataScope(),这里没有什么问题,用什么都是可以的
  2. LogServiceImplgetParameter(Method method, Object[] args)方法,使用了Hutool的JSON组件,这里如果序列化的参数出现了循环引用,则没有办法去避免异常的产生。如果使用Jackson,则可以使用@JsonManagedReference@JsonBackReference,或者使用@JsonIgnore来避免异常。如果使用fastjson,同样可以使用@JSONField(serialize = false)
  3. ConfigurerAdapter类里,配置了fastjson来格式化时间的converter,此处配置会导致其他默认的converter失效;比如,会导致无法使用ResponseEntity<?>来返回InputStreamResource来提供文件下载功能;所以目前文件下载都是用HttpServletResponse来实现的。此处我建议取消添加额外的converter,使用SpringBoot自带的jackson即可,关于时间的格式化完全可以交给前端来做。
  4. @EnableWebMvc会导致产生一个独立的ObjectMapper,不受任何spring.jackson.*配置设置影响。
heihei180 commented 1 year ago

想法很好,个人非常不接受一个项目很多种json操作包。除非是依赖包的功能无法满足