我有本字典:
var schedule : [String:[(Bool,Bool)]]!//[Day:[(AMenabled:PMenabled)]]我想把它解码成一个json文件,把它放到服务器上。
调度对象如下所示:
["Sat":[ (true,true),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(true,true)
],
"Sun":[ (true,true),
(false,true),
(true,true),
(false,true),
(true,true),
(false,true),
(true,true),
(false,true),
(true,true),
(false,true),
(true,true),
(false,true)
],
"Mon":[ (true,true),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(true,false),
(true,true)
],
"Tue":[ (true,true),
(false,true),
(false,false),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,true)
],
"Wed":[ (true,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,true),
(true,true),
(true,true)
],
"Thur":[ (true,true),
(false,true),
(true,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false)
],
"Fri":[ (true,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,false),
(false,true),
(false,true),
(true,true),
(true,false)
]
]我想解码成这样的JSON文件:
{
"parental_control": {
"user_id": 57,
"profile": 1,
"chat": false,
"forum_read": false,
"forum_write": false,
"days": [
[
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
],
[
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
],
[
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
],
[
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
],
[
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
],
[
true,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
true
],
[
true,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
true
]
]
}
}因此,在不需要处理json文件中的父控件和其他键的情况下,如何实现到json文件的映射:
我试过什么?
我试过使用内置的NSJSONSerialization
var json = NSJSONSerialization.dataWithJSONObject(self.schedule, options: NSJSONWritingOptions.PrettyPrinted,error: nil)但是我发现了一个错误:
无法使用类型的参数列表调用dataWithJSONObject ([String:(Bool,Bool)]!,选项:NSJSONWritingOptions,error:nil)‘
发布于 2015-08-05 07:52:33
您所得到的错误是因为NSJSONSerialization在序列化您的(Bool, Bool)元组时遇到了问题(元组在JSON中不可用)。您必须将它们转换为适当的类型才能序列化它们。
另外,这里是 documentation的第一段。您可以将其用作有效类型的引用(请注意,Swift各自的类型(如Strings、数组、Dictionaries等)当然会按预期工作):
可以转换为JSON的对象必须具有以下属性:
发布于 2015-08-05 07:55:28
我重写了您的示例,它使用Array而不是元组。因为NSJSONSerialization不能处理元组,因为JSON中没有这样的东西。
var days = ["Mon", [true, false]]
let json = NSJSONSerialization.dataWithJSONObject(days, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
let _days = NSJSONSerialization.JSONObjectWithData(json!, options: NSJSONReadingOptions.allZeros, error: nil) as! Array<AnyObject>
println(_days[0]) // prints Mon
println(_days[1][0]) // prints 1发布于 2015-08-05 08:07:02
NSJSONSerialization不包括元组,因此可以将schedule定义为:
var schedule : [String:[Array<Bool>]]!在schedule中插入数据
schedule = ["Sat":[ [true,true],
[false,true],
[false,false],
[false,true],
[false,false]
],
"Sun":[ [true,true],
[false,true],
[true,true],
[false,true],
[true,true],
[false,true]
]]现在您可以将其转换为JSON数据:
var jsonData = NSJSONSerialization.dataWithJSONObject(self.schedule, options: NSJSONWritingOptions.PrettyPrinted,error: nil)https://stackoverflow.com/questions/31826251
复制相似问题