自定义反序列化工具类
自定义反序列化工具类
在实体类中实现了 implements Serializable 序列化 还实现了 UserDetails 对传入的字段 authorities 返序列化失败
对字段 authorities 单独自定义反序列化工具类
下面是我的报错:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of
org.springframework.security.core.GrantedAuthority
(no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (PushbackInputStream); line: 1, column: 442] (through reference chain: com.abin.pojo.Admin[“authorities”]->java.util.ArrayList[2])
上代码:CustomAuthorityDeserializer.class
/*** 自定义 Authority解析器*/
public class CustomAuthorityDeserializer extends JsonDeserializer { //@Overridepublic Object deserialize(JsonParser jsonParser, //JSON解析DeserializationContext deserializationContext) // 上下文throws IOException, JsonProcessingException {ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec(); //得到Object对象JsonNode jsonNode = mapper.readTree(jsonParser); // readTree得到TreeNode对象,JsonNode有实现TreeNode接口List<GrantedAuthority> grantedAuthorities = new LinkedList<>(); // 返回Iterator<JsonNode> elements = jsonNode.elements(); // 得到迭代器 while (elements.hasNext()) {JsonNode next = elements.next();JsonNode authority = next.get("authority"); //需要对这个字段进行解析grantedAuthorities.add(new SimpleGrantedAuthority(authority.asText()));}return grantedAuthorities;}
}
在用的地方使用:重写 UserDetails 类的方法 getAuthorities()
这个方法得到这个用户拥有的权限: 加上 @JsonDeserialize 注解来使用
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;@Override@JsonDeserialize(using = CustomAuthorityDeserializer.class) // 用注解 使用public Collection<? extends GrantedAuthority> getAuthorities() {List<SimpleGrantedAuthority> authorities = roles.stream().map(role -> new SimpleGrantedAuthority(role.getName())).collect(Collectors.toList());return authorities;}
自定义反序列化工具类相关推荐
- 自定义日期工具类 java 1614698552
自定义日期工具类 java 1614698552 需求 思路 演练 日期转字符串的方法 字符串转日期方法 测试类 更多尝试 测试另一个方法
- 解密android日志xlog,安卓开发技巧2:自定义日志工具类XLog的实现
安卓开发技巧二:自定义日志工具类XLog的实现 我们在开发过程中,打印日志是必不可少的一个调试环节,然而,直接使用系统自带的Log日志类,并不能满足我们实际项目的需求:假如我们现在在开发一款比较大的项 ...
- java序列化和反序列化工具_Java 序列化和反序列化工具类并解决StreamCorruptedException问题 | 学步园...
问题: 若通过ObjectOutputStream向一个文件中多次以追加的方式写入Object,为什么用ObjectInputStream读取这些Object时,会产生StreamCorruptedE ...
- 弄清std::chrono::system_clock::time_point,自定义时间工具类
time_t 是32位的整数,用来存放格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,不能表示毫秒,约能表示135年 time ...
- hutool 自定义excel_HuTool工具类使用之Excel文档的导入导出
HuTool工具类使用之Excel文档的导入导出 前言 在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel ...
- 自定义数据字典工具类
字典注解 类注解 import lombok.NonNull; import java.lang.annotation.*;/*** 数据字典类注解** @author huxiang*/ @Targ ...
- 自定义RunTimeException工具类
文章目录 自定义异常MyInfoException,将异常提示传递给前端 1. 定义一个异常的工具类extends RuntimeException 2. 封装统一的响应工具类 自定义异常MyInfo ...
- JDBC基础篇(MYSQL)——自定义JDBCUtil工具类
package util;import java.io.File; import java.io.InputStream; import java.sql.Connection; import jav ...
- ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
最新文章
- 【错误记录】Flutter 界面跳转报错 ( Navigator operation requested with a context that does not include a Naviga )
- C语言文件读写(2)-文本文件写操作
- Scala模式匹配细节说明
- 【特征选择】基础知识
- 拦截retrofit数据请求返回的信息来判断程序错误点
- notepad拼心形_配置基于NotePad++工具下的C#开发环境
- openEuler Summit 带你解锁开源与操作系统的不解之缘
- 金蝶kis云,调用增删改查注意点
- django 获取环境变量_django 环境变量配置过程详解
- 加载项目失败的解决办法
- 【Oracle】rollup函数
- 电机正反转的远程计算机控制,plc控制电机正反转原理图
- python编写计算器(图形界面)
- 如何恢复计算机隐藏的文件夹,隐藏文件夹,小编教你电脑隐藏文件夹怎么恢复...
- Java写的小游戏贪吃蛇代码
- 超详细的《使用腾讯云移动直播开发连麦》
- mac辅助功能授权无效
- 《全面解读IPTV生态链》-转自CSDN
- 软件开发学习的5大技巧,你知道吗?
- 零基础搭建私人影音媒体平台【远程访问Jellyfin播放器】
热门文章
- default语句java_default关键字用法
- php js写法,javaScript封装的各种写法
- 小马哥--高仿红米note T208联通版移植测试完美版4g 刷机包 开机界面面观
- win10关闭快速启动_为什么Win10关机不彻底,按下键盘就开机还很耗电,怎么解决?...
- 【已解决】Exception in thread “main“ java.lang.IllegalArgumentExcept: illegal initialSize 6, maxActive 5
- 深入浅出游戏算法(3)-lua脚本
- vue生命周期函数可以操作dom_vue生命周期钩子函数
- windowsservice占内存多么_12GB内存只需不到四千元,性价比和体验兼顾的联想小新Air 14...
- pythonzeros函数_numpy zeros 函数
- JS 将Json转Geojson