首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字典中的JSON编码[不能调用'dataWithJSONObject .]

字典中的JSON编码[不能调用'dataWithJSONObject .]
EN

Stack Overflow用户
提问于 2015-08-05 07:39:42
回答 3查看 597关注 0票数 0

我有本字典:

代码语言:javascript
复制
    var schedule : [String:[(Bool,Bool)]]!//[Day:[(AMenabled:PMenabled)]]

我想把它解码成一个json文件,把它放到服务器上。

调度对象如下所示:

代码语言:javascript
复制
        ["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文件:

代码语言:javascript
复制
{
"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

代码语言:javascript
复制
var json = NSJSONSerialization.dataWithJSONObject(self.schedule, options: NSJSONWritingOptions.PrettyPrinted,error: nil)

但是我发现了一个错误:

无法使用类型的参数列表调用dataWithJSONObject ([String:(Bool,Bool)]!,选项:NSJSONWritingOptions,error:nil)‘

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-05 07:52:33

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

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

可以转换为JSON的对象必须具有以下属性:

  • 顶层对象是NSArray或NSDictionary。
  • 所有对象都是NSString、NSNumber、NSArray、NSDictionary或NSNull的实例。
  • 所有字典键都是NSString的实例。
  • 数字不是NaN或无穷大。
票数 3
EN

Stack Overflow用户

发布于 2015-08-05 07:55:28

我重写了您的示例,它使用Array而不是元组。因为NSJSONSerialization不能处理元组,因为JSON中没有这样的东西。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2015-08-05 08:07:02

NSJSONSerialization不包括元组,因此可以将schedule定义为:

代码语言:javascript
复制
var schedule : [String:[Array<Bool>]]!

schedule中插入数据

代码语言:javascript
复制
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数据:

代码语言:javascript
复制
var jsonData = NSJSONSerialization.dataWithJSONObject(self.schedule, options: NSJSONWritingOptions.PrettyPrinted,error: nil)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31826251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档