我具有正确编码的base64字符串,可以在线对其进行解码,但是当我使用下面的代码并尝试使用swift对其进行解码时,它报告Unexpectedly found nil while unwrapping an Optional value
错误。
// the base64Code can be decode online.
let decodeBase64Code = Data(base64Encoded: base64Code)!
base64代码
eyJyb2xlcyI6WyJVc2VyIiwiTWFpbnRhaW5lciJdLCJhdWQiOiJzdHVkZW50cyIsImV4cCI6MTYwMTk5MjU5OCwiaWF0IjoxNjAxOTg4OTk4LCJpc3MiOiJzZXJ2aWNlIHByb2plY3QiLCJzdWIiOiI0NWI1ZmJkMy03NTVmLTQzNzktOGYwNy1hNThkNGEzMGZhMmYifQ
答案 0 :(得分:1)
base64编码的字符串的问题是未正确终止。您只需要在字符串末尾添加"=="
:
let base64Code = "eyJyb2xlcyI6WyJVc2VyIiwiTWFpbnRhaW5lciJdLCJhdWQiOiJzdHVkZW50cyIsImV4cCI6MTYwMTk5MjU5OCwiaWF0IjoxNjAxOTg4OTk4LCJpc3MiOiJzZXJ2aWNlIHByb2plY3QiLCJzdWIiOiI0NWI1ZmJkMy03NTVmLTQzNzktOGYwNy1hNThkNGEzMGZhMmYifQ"
let decodeBase64Code = Data(base64Encoded: base64Code + repeatElement("=", count: base64Code.count.isMultiple(of: 4) ? 0 : 4 - base64Code.count % 4))!
let json = String(data: decodeBase64Code, encoding: .utf8)! // "{"roles":["User","Maintainer"],"aud":"students","exp":1601992598,"iat":1601988998,"iss":"service project","sub":"45b5fbd3-755f-4379-8f07-a58d4a30fa2f"}"