Results 23 comments of 随心

> 我发现是jdk问题,我使用jdk8没有这个问题了,但是用openjdk11还是有问题。 > @fanyong920 我直接用的jdk11 会报错

有指定某个字段序列化规则到方式么?像jackson那样给某个属性加个注解,自己实现该属性的序列化和反序列化实现。我看了fastjson2的相关注解,JSONField的serializeUsing和deserializeUsing根本不生效,打断点不执行方法。JSONType里面到那两个属性是可以执行serializeUsing和deserializeUsing定义的方法的。但是也没找到别的参考文档可以看,代码注释写的太模糊。

> 能提供JSONField#serializeUsing和deserializeUsing不生效的重现的testcase么? 我这反序列化还是有问题: ``` public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); // GenericFastJsonRedisSerializer fastJsonRedisSerializer = new GenericFastJsonRedisSerializer(); FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); FastJsonConfig fastJsonConfig = fastJsonRedisSerializer.getFastJsonConfig();...

这个是我反序列化的类型: ``` @Data @NoArgsConstructor public class LoginUser implements UserDetails { private User user; /** * 帐户是否过期 */ private boolean accountNonExpired = true; /** * 帐户是否被锁定 */ private boolean accountNonLocked =...

redis里面存的数据信息: ``` {"@type":"top.jiangqiang.framework.system.entity.LoginUser","accountNonExpired":true,"accountNonLocked":true,"authorities":Set[{"@type":"org.springframework.security.core.authority.SimpleGrantedAuthority","authority":"123"},{"@type":"org.springframework.security.core.authority.SimpleGrantedAuthority","authority":"12312"}],"credentialsNonExpired":true,"enabled":true,"menuSet":Set[{"@type":"top.jiangqiang.framework.system.entity.vo.MenuVo","authority":"","component":"routerView/parent.vue","externalLink":false,"id":25,"menuSort":8,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isIframe":false,"isKeepAlive":true,"icon":"iconfont icon-diannao1","isAffix":false,"title":"测试名称","url":"","isHide":false},"name":"test","parentId":0,"path":"/test","redirect":""},{"@type":"top.jiangqiang.framework.system.entity.vo.MenuVo","component":"home/index.vue","externalLink":false,"id":1,"menuSort":1,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin","common"],"isKeepAlive":true,"icon":"iconfont icon-shouye","isAffix":true,"title":"首页","isHide":false},"name":"home","parentId":0,"path":"/home"},{"@type":"top.jiangqiang.framework.system.entity.vo.MenuVo","authority":"","component":"3123123","externalLink":false,"id":51,"menuSort":0,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isIframe":false,"isKeepAlive":true,"icon":"","isAffix":false,"title":"123","url":"","isHide":false},"name":"3123","parentId":0,"path":"12312312","redirect":"1231"},{"@type":"top.jiangqiang.framework.system.entity.vo.MenuVo","authority":"123","component":"system/generator/index.vue","externalLink":false,"id":48,"menuSort":0,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isIframe":false,"isKeepAlive":true,"icon":"iconfont icon-diannao-shuju","isAffix":false,"title":"代码生成","url":"","isHide":false},"name":"112","parentId":0,"path":"/genCode","redirect":""},{"@type":"top.jiangqiang.framework.system.entity.vo.MenuVo","children":[{"component":"system/dept/index.vue","externalLink":false,"id":6,"menuSort":6,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin"],"isKeepAlive":true,"icon":"ele-OfficeBuilding","isAffix":false,"title":"部门管理","isHide":false},"name":"systemDept","parentId":2,"path":"/system/dept"},{"component":"system/menu/index.vue","externalLink":false,"id":3,"menuSort":3,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin"],"isKeepAlive":true,"icon":"iconfont icon-caidan","isAffix":false,"title":"菜单管理","isHide":false},"name":"systemMenu","parentId":2,"path":"/system/menu"},{"component":"system/user/index.vue","externalLink":false,"id":5,"menuSort":5,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin"],"isKeepAlive":true,"icon":"iconfont icon-icon-","isAffix":false,"title":"用户管理","isHide":false},"name":"systemUser","parentId":2,"path":"/system/user"},{"component":"system/role/index.vue","externalLink":false,"id":4,"menuSort":4,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin"],"isKeepAlive":true,"icon":"ele-ColdDrink","isAffix":false,"title":"角色管理","isHide":false},"name":"systemRole","parentId":2,"path":"/system/role"},{"authority":"","component":"system/i18n/index.vue","externalLink":false,"id":45,"menuSort":9,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isIframe":false,"isKeepAlive":true,"icon":"iconfont icon-diannao1","isAffix":false,"title":"国际化","url":"","isHide":false},"name":"i18n","parentId":2,"path":"/system/i18n","redirect":""},{"component":"system/dic/index.vue","externalLink":false,"id":7,"menuSort":7,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin"],"isKeepAlive":true,"icon":"ele-SetUp","isAffix":false,"title":"字典管理","isHide":false},"name":"systemDic","parentId":2,"path":"/system/dic"}],"component":"routerView/parent.vue","externalLink":false,"id":2,"menuSort":2,"menuType":"menu","meta":{"@type":"java.util.LinkedHashMap","isLink":"","isIframe":false,"roles":["admin"],"isKeepAlive":true,"icon":"iconfont icon-xitongshezhi","isAffix":false,"title":"系统设置","isHide":false},"name":"system","parentId":0,"path":"/system","redirect":"/system/setting"}],"user":{"active":true,"deleted":false,"id":1,"nickname":"admin","password":"d29d20329fbd47d8b42fb2ac69069a4a104f215e509b85868c1f47ba9eab114dd6fdfe4d6812e7b7f498056f7b0ac5740c6c056e198632992fa8b9dd958e9bd5ef765b4e46b8fe58079eb6b10a7e563c4bee074b412138ca2d426a9b3f406ad3","username":"admin"}} ```

> 您发的这个例子,我都跑不了。 ![image](https://user-images.githubusercontent.com/44720422/189283376-40e691fd-9842-4962-9391-a15568b7054b.png) 看这报错,我是不是还要给他弄一个mixin?

> > > > 您发的这个例子,我都跑不了。 > > ![image](https://user-images.githubusercontent.com/44720422/189283376-40e691fd-9842-4962-9391-a15568b7054b.png) > > 看这报错,我是不是还要给他弄一个mixin? 写了个mixin,这个是可以用的,但是Redis的那个我应该在哪里给他注入mixin呢?有点不清楚fastjson内部逻辑是啥,JSON调用mixin之后,项目任何地方都可以用???这个是全局的?

> ```java > interface JSON { > static void mixIn(Class target, Class mixinSource) { > JSONFactory.defaultObjectWriterProvider.mixIn(target, mixinSource); > JSONFactory.getDefaultObjectReaderProvider().mixIn(target, mixinSource); > } > } > ``` > > 通过JSON.mxin是注册在defaultObjectWriterProvider和defaultObjectReaderProvider上的,可以理解是全局的 我随便写了个自定义序列化字段的demo,不生效,是使用jsonfield注解配置的,反序列化可以生效,序列化不执行。

> > 是哪个类不兼容了? Fastjson2项目里面使用到javax.servlet包下的代码多数都不兼容吧。但是目前只遇到图片中这个类不兼容,我使用的springboot3环境,这个异常类名字变了,导致找不到该class,因此我在项目里创建了一个和该类名字一样的异常class,貌似可以正常运行。

> 是哪个类不兼容了? 看编辑器提示,貌似httpservletrequest和httpservletservletresponse这两个类也是找不到的, 因为springboot是Tomcat10的环境,但是我运行的时候只会报错找不到javax.servlet.ServletOutputStream,所以我自己写了一个同名的类,暂时可以运行。