2017-05-01 5 views
0

JWTトークンを使ってio.jsonwebtoken maven依存関係を使用しています。io.jsonwebtoken.Claimsをjava.util.Map <String、Object>に変換する方法ですか?

カスタムペイロードを含むJWTトークンを正常に作成できました。私はそれを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. 

しかし、私はが必要 - :ほとんど)私はをたい似ています

何か助けていただければ幸いです。

答えて

0

は最後に、私は自分自身を聞くことによって答えを得た -

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; 
} 
0

io.jsonwebtoken.Claimsjava.util.Map<String, Object>を拡張し、答えを得るまで停止しないでください。

io.jsonwebtoken.impl.DefaultClaimsClaimsの唯一の提供された実装)は、LinkedHashMap<String, Object>をデコレートし、いくつかのメソッドを追加するMapの実装です。

Map<String, Object>であるため、Mapに変換する必要はありません。 カスタムメソッドを削除してClaimsHashMapに変換する場合、最短方法はのコンストラクタにClaimsを渡すだけです。それはあなたが手動で行ったのと同じことをします。

Claims claims = ...; 

Map<String, Object> expectedMap = new HashMap<>(claims); 
関連する問題