如何将io.jsonwebtoken.Claims转换为java.util.Map<String,Object>?
How to convert from io.jsonwebtoken.Claims to java.util.Map<String,Object>?
我正在使用 io.jsonwebtoken
maven 依赖项来处理 JWT
令牌。
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>
任何帮助将不胜感激..!!
Finally, i got the answer by listening my own - don't stop till get the answer,
public Map<String, Object> getMapFromIoJsonwebtokenClaims(Claims claims){
Map<String, Object> expectedMap = new HashMap<String, Object>();
for(Entry<String, Object> entry : claims.entrySet()) {
expectedMap.put(entry.getKey() , entry.getValue());
}
return expectedMap;
}
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);
我正在使用 io.jsonwebtoken
maven 依赖项来处理 JWT
令牌。
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>
任何帮助将不胜感激..!!
Finally, i got the answer by listening my own - don't stop till get the answer,
public Map<String, Object> getMapFromIoJsonwebtokenClaims(Claims claims){
Map<String, Object> expectedMap = new HashMap<String, Object>();
for(Entry<String, Object> entry : claims.entrySet()) {
expectedMap.put(entry.getKey() , entry.getValue());
}
return expectedMap;
}
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);