我有一本字典:
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文件中的parentalcontrol和其他键,如何实现到json文件的映射:
我尝试了什么?
我尝试过使用内置NSJSONSerialization
var json = NSJSONSerialization.dataWithJSONObject(self.schedule, options: NSJSONWritingOptions.PrettyPrinted,error: nil)
但是我收到了这个错误:
无法使用类型的参数列表调用dataWithJSONObject '([字符串:[(布尔,布尔)]]!选项:NSJSONWritingOptions,误差:无)'
答案 0 :(得分:3)
您得到的错误是因为NSJSONSerialization
无法序列化(Bool, Bool)
元组(元组在JSON中不可用)。您必须将它们转换为适当的类型才能将它们序列化。
此外,这是NSJSONSerialization
documentation的第一段。您可以将此作为有效类型的参考(请注意,Swift各自的类型,如字符串,数组,字典等当然会按预期工作):
可以转换为JSON的对象必须具有以下内容 属性:
顶级对象是NSArray或NSDictionary。
所有对象都是NSString,NSNumber,NSArray,NSDictionary或的实例 NSNull。
所有字典键都是NSString的实例。
数字不是NaN或无穷大。
答案 1 :(得分:1)
我重写了你的例子,它使用了一个数组而不是元组。因为#!/bin/bash
LD_LIBRARY_PATH=$(dirname $(which your_file)) your_file
无法处理元组,因为JSON中没有这样的东西。
NSJSONSerialization
答案 2 :(得分:0)
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)