准备用 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 与实例不一致,一直没弄明白症结
