准备用 swfit 写一个七牛生成 token 的算法,发现将 Dictionay 转成 JSON 再生成 URL 安全的 Base64 编码与在线实例不一致
func JSONStringify(value: AnyObject,prettyPrinted:Bool = false) -> String{
let options = prettyPrinted ? NSJSONWritingOptions.PrettyPrinted : NSJSONWritingOptions(rawValue: 0)
if NSJSONSerialization.isValidJSONObject(value) {
do{
let data = try NSJSONSerialization.dataWithJSONObject(value, options: options)
if let string = NSString(data: data, encoding: NSUTF8StringEncoding) {
return string as String
}
}catch {
print("error")
//Access error here
}
}
return ""
}
let jsonObject: [String : AnyObject] = ["deadline":1448340828,"scope":"Blog",]
let jsonString = JSONStringify(jsonObject)
let Data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
let encoded = Data?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
let demoStr = "{\"scope\":\"Blog\",\"deadline\":1448340828}"
let demoData = demoStr.dataUsingEncoding(NSUTF8StringEncoding)
let demoEncoded = demoData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
print(encoded)
print(demoEncoded)
手动构建字面量 String 的 demoEncoded 与在线实例是一致的,构建 Dictionary 转化的 encode 与实例不一致,一直没弄明白症结😂
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.