在Swift中编码和解码字符串数组的JSON字典

时间:2015-10-05 16:53:27

标签: arrays json dictionary swift2

我正在编写一个部分依赖于大型数组字典的Swift应用程序。摘录如下:

let arithmeticalDict:Dictionary<String, Array <String>> =
[
    "1116": [],
    "1117": [],
    "1118": ["(1+1+1)*8"],
    "1128": ["1*(1 + 2)*8","(1 + 2)/(1/8)"]
]

我认为将它放入JSON资源可能更容易管理,这是我以前用于小型简单字典的技术。这种情况较大,715个条目占用磁盘上约370Kb。但是在这种情况下,我遇到了两个问题:

  1. 如何在JSON文件中指定字典中的每个键对应一个字符串数组(其中数组的长度不规则,有些可能不包含任何内容)?

  2. 如何在Swift中加载JSON文件到适当的<String, Array <String>>字典?

1 个答案:

答案 0 :(得分:2)

1-您的字典已经输入,它是Dictionary<String, Array <String>>,因此您只需使用NSJSONSerialization来创建JSON数据:

do {
    let jsonData = try NSJSONSerialization.dataWithJSONObject(arithmeticalDict, options: NSJSONWritingOptions.PrettyPrinted)
    // now you can export "jsonData" to a file
} catch {
    print(error)
}

2-要解码保存的JSON对象,请再次使用相同的类型:

do {
    if let dict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as? [String:[String]] {
        print(dict)  // ["1118": ["(1+1+1)*8"], "1117": [], "1116": [], "1128": ["1*(1 + 2)*8", "(1 + 2)/(1/8)"]]
    }
} catch {
    print(error)
}