ios - 来自字典的 JSON 编码 [无法调用 'dataWithJSONObject ...]

标签 ios objective-c json swift swift2

我有一本字典:

    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)

但是我收到了这个错误:

cannot invoke dataWithJSONObject with an argument list of type '([String:[(Bool,Bool)]]!,options:NSJSONWritingOptions,error:nil)'

最佳答案

您收到的错误是因为 NSJSONSerialization 在序列化您的 (Bool, Bool) 元组时遇到问题(元组在 JSON 中不可用)。您必须将它们转换为适当的类型才能序列化它们。

另外,这里是NSJSONSerialization documentation的第一段.您可以将其用作有效类型的引用(请注意,Swift 各自的类型,如字符串、数组、字典等当然会按预期工作):

An object that may be converted to JSON must have the following properties:

  • The top level object is an NSArray or NSDictionary.

  • All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.

  • All dictionary keys are instances of NSString.

  • Numbers are not NaN or infinity.

关于ios - 来自字典的 JSON 编码 [无法调用 'dataWithJSONObject ...],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826251/

相关文章:

ios - 让数字键盘显示在 input type=text iOS 上

ios - 进程有超出允许时间的事件断言 iOS

ios - 当我在 NSOperation 执行 performSelectorOnMainThread 时弹出导航 Controller 时应用程序崩溃

PHP json_decode() 输出 : Object vs Array?

java - 为 java.util.Maps 自定义 Jersey JSON 编码

ios - 使用 Swift 3.0 在 iOS 中禁用以前的日期、月份、年份 JTAppleCalendar

ios - Facebook 应用程序请求未在 iOS 设备上显示?

ios - 实例被释放,而键值观察者仍然在其中注册

iphone - UITableView 提交 EditingStyle 而不删除单元格

javascript - 使用 jQuery 从 asp.net 响应中检索 JSON 值