arrays - 生成 JSON 数组并将其转换为 Base64 字符串

标签 arrays json swift base64

我正在尝试在 Swift 中创建一个 Base64 字符串。我有一个 Base64 编码字符串及其数组对应部分的示例。我现在的问题是,我不知道如何获得与示例中给出的数组等效的数组。

因为我不想在我的 XCode 项目中乱七八糟,所以我在 Playground 上做了以下事情。

给定数组:

{"WHERE":{"Class":"%3f","Location":"3b"},"ORDER":["Day ASC","Location DESC"]}

给定 Base64 字符串:

eyJXSEVSRSI6eyJDbGFzcyI6IiUzZiIsIkxvY2F0aW9uIjoiM2IifSwiT1JERVIiOlsiRGF5IEFTQyIsIkxvY2F0aW9uIERFU0MiXX0=

首先我正在解码示例字符串

let str = "eyJXSEVSRSI6eyJDbGFzcyI6IiUzZiIsIkxvY2F0aW9uIjoiM2IifSwiT1JERVIiOlsiRGF5IEFTQyIsIkxvY2F0aW9uIERFU0MiXX0="

let data = NSData(base64EncodedString: str, options: NSDataBase64DecodingOptions(rawValue: 0))

do {
    let result = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
} catch let error {
    print(error)
}
//"result" is ["WHERE": ["Class": "%3f", "Location": "3b"], "ORDER": ["Day ASC", "Location DESC"]]

下面我试图从上面重现字符串

var array = [String : AnyObject]()
var arrayPartA = [String : String]()
arrayPartA["Class"] = "%3f"
arrayPartA["Location"] = "3b"
array["ORDER"] = ["Day ASC", "Location DESC"]
array["WHERE"] = arrayPartA
array //The playground says that "array" is ["ORDER": ["Day ASC", "Location DESC"], "WHERE": ["Class": "%3f", "Location": "3b"]]
      //"ORDER" and "WHERE" are switched but I don't get them to be at the right position

let utf8str2: NSData = String(array).dataUsingEncoding(NSUTF8StringEncoding)!

let encodedStr = utf8str2.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
//Here "encodedStr" is WyJPUkRFUiI6ICgKICAgICJEYXkgQVNDIiwKICAgICJMb2NhdGlvbiBERVNDIgopLCAiV0hFUkUiOiB7CiAgICBDbGFzcyA9ICIlM2YiOwogICAgTG9jYXRpb24gPSAzYjsKfV0=
//but it should be eyJXSEVSRSI6eyJDbGFzcyI6IiUzZiIsIkxvY2F0aW9uIjoiM2IifSwiT1JERVIiOlsiRGF5IEFTQyIsIkxvY2F0aW9uIERFU0MiXX0=

如果有人能向我解释我做错了什么以及如何重现给定的 Base64 字符串,我会很高兴。

由于我是这个网站的新手,对于错误的布局或我不知道的其他可能约定,我提前表示歉意。

最佳答案

你能试试这个吗?这是你想做的吗?它应该将字典转换为 base64 字符串

func jsonToBaseString (yourJSON: [String: String]) -> String? {
    do {
        let jsonData = try JSONSerialization.data(withJSONObject: yourJSON, options: JSONSerialization.WritingOptions.prettyPrinted)
        return
            jsonData.base64EncodedString(options: .endLineWithCarriageReturn)
    } catch {
        return nil
    }
}

字典是 Swifts JSON 表示...

关于arrays - 生成 JSON 数组并将其转换为 Base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879448/

相关文章:

javascript - 使用 javascript 函数解析 Coldfusion JSON - 未捕获的 ReferenceError : WddxRecordset is not defined

iOS iMessage 扩展 - willTransition : to and didTransition :to are not getting called

ios - 如何在一个 ViewController 中创建实现多协议(protocol)?

java - FlexJson - 无法序列化 Double[] 数组

c++ - 随机数生成器 C++ 动态数组

arrays - 根据对象属性查询 Mongoose 文档

java - 将浮点时间戳从 Python 转换为 Java 中的 Date

ios - 将 JSON 解析为对象

swift - 如何快速编译着色器,位置总是返回-1

c - 冒泡排序不排序和额外元素