无法快速使用base64解码

时间:2020-10-06 12:53:15

标签: swift base64

我具有正确编码的base64字符串,可以在线对其进行解码,但是当我使用下面的代码并尝试使用swift对其进行解码时,它报告Unexpectedly found nil while unwrapping an Optional value错误。

// the base64Code can be decode online.
let decodeBase64Code = Data(base64Encoded: base64Code)!

base64代码

eyJyb2xlcyI6WyJVc2VyIiwiTWFpbnRhaW5lciJdLCJhdWQiOiJzdHVkZW50cyIsImV4cCI6MTYwMTk5MjU5OCwiaWF0IjoxNjAxOTg4OTk4LCJpc3MiOiJzZXJ2aWNlIHByb2plY3QiLCJzdWIiOiI0NWI1ZmJkMy03NTVmLTQzNzktOGYwNy1hNThkNGEzMGZhMmYifQ

1 个答案:

答案 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"}"
相关问题