我正在与 JWT
合作使用 io.jsonwebtoken
的 token Maven 依赖。
I am able to create a JWT token with custom payloads successfully.
现在,当我要去parse
时它,我需要Map<String, Object>
对象它具有在创建时添加的所有自定义有效负载,但不幸的是我无法完成它。
我正在使用以下代码来解析它,
JwtParser parser = Jwts.parser();
Claims claims = parser
.setSigningKey(DatatypeConverter.parseBase64Binary(SIGN_KEY))
.parseClaimsJws(jwt).getBody();
现在,我有 io.jsonwebtoken.Claims
,但不知道如何转换这个 io.jsonwebtoken.Claims
至java.util.Map<String,Object>
但是我尝试用这个来知道(看起来几乎与我想要的相似):-
System.out.println(claims.toString()); -> this is correctly prints whole custom payloads.
但我需要Map<String,Object>
任何帮助将不胜感激..!!
最佳答案
io.jsonwebtoken.Claims
延伸java.util.Map<String, Object>
。
io.jsonwebtoken.impl.DefaultClaims
,唯一提供的 Claims
的实现,是他们的 Map 实现,它装饰 LinkedHashMap<String, Object>
并添加了一些方法。
所以你不应该做任何事情来转换为 Map
,因为它已经是 Map<String, Object>
。
如果您想摆脱他们的自定义方法并转换 Claims
至HashMap
,最短路线就是通过Claims
到HashMap
的构造函数。它的作用与您手动执行的操作相同。
Claims claims = ...;
Map<String, Object> expectedMap = new HashMap<>(claims);
关于java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map<String,Object>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717714/