从 JWT 中获取 Set<String> 类型的对象?

Fetching an object of type Set<String> from a JWT?

我正在尝试使用 JJWT 库从 JSON 网络令牌中获取一些数据:https://github.com/jwtk/jjwt

方法签名是这样的:

<T> T get(String claimName, Class<T> requiredType);

在声明属性中,我有一组字符串类型。

当尝试像这样从这个方法中获取时

Claims claims - Jwts.parser()...
claims.get("Role", Set.class);

我收到以下错误

! io.jsonwebtoken.RequiredTypeException: Expected value to be of type: interface java.util.Set, but was class java.util.ArrayList

设置此声明时,类型为 Set

public Set<String> getRoles() {
    return roles;
}  ....


claim("Role", user.getRoles())

有什么解决办法吗?

JSON 因此 JWT 没有 Set 的概念,将数据检索为 Array / ArrayList 并将其转换为 Set:Easiest way to convert a List to a Set in Java