मेरे पास निम्न कोड है, जो io.jsonwebtoken.Claims ऑब्जेक्ट से उपयोगकर्ता भूमिकाएं प्राप्त करता है

val claims = jwtUtil.getAllClaimsFromToken(authToken)
val rolesMap = claims.get("role", ArrayList::class.java)
val roles = ArrayList<Role>()
for (rolemap in rolesMap) {
    roles.add(Role.valueOf((rolemap as LinkedHashMap<String, String>)["authority"] as String))
}

क्या कोटलिन में String के रूप में भूमिका पाने का कोई बेहतर/स्वच्छ तरीका है?

0
Jerry 24 अक्टूबर 2018, 09:40

1 उत्तर

सबसे बढ़िया उत्तर

आप इसे इस तरह कर सकते थे। मुख्य अंतर उच्च क्रम फ़ंक्शन map का उपयोग है, जो एक समान आकार का एक नया संग्रह बनाने के लिए एक फ़ंक्शन को लागू करने वाले संग्रह को पुनरावृत्त करता है लेकिन एक नए प्रकार का।

साथ ही, जब तक आपको डिबगिंग/लॉगिंग उद्देश्यों के लिए चर के लिए असाइन किए जाने वाले फ़ंक्शन के इंटरमीडिएट हिस्सों की आवश्यकता नहीं होती है, तो आप केवल असाइनिंग मान और केवल चेन फ़ंक्शन कॉल को छोड़ सकते हैं, लेकिन यह इसे पढ़ने में कम आसान बना सकता है (बहस योग्य):

return jwtUtil.getAllClaimsFromToken(authToken)
              .get("role", ArrayList::class.java)
              .map {
                    Role.valueOf((it as Map<String, String>)["authority"])
              }
1
Thomas Cook 24 अक्टूबर 2018, 08:05