无法将空数组组成的数组转换为 JSON 与 Swift 2

标签: json ios Swift
发布时间: 2017/3/5 4:34:41
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这段代码 (这灵感来自于示例) 出了什么错误?目前,它输出的 JSON 字符串 "(<5b5d>, 4)" 而不是预期 "[]"

var tags: [[String]] = []
// tags to be added later ...
do {
    let data = try NSJSONSerialization.dataWithJSONObject(tags, options: [])
    let json = String(data: data, encoding: NSUTF8StringEncoding)
    print("\(json)")
}
catch {
    fatalError("\(error)")
}

解决方法 1:

简短的回答︰创建 JSON 数据是正确的。问题是在数据转换为一个字符串,你想要的是 NSString 的方法︰

let json = NSString(data: data, encoding: NSUTF8StringEncoding) as! String

产生预期 []

稍长的答复︰ 您的代码

let json = String(data: data, encoding: NSUTF8StringEncoding)

调用 String init 方法

/// Initialize `self` with the textual representation of `instance`.
/// ...
init<T>(_ instance: T)

其结果是元组的文本表示 (data: data, encoding: NSUTF8StringEncoding) :

(<5b5d>, 4)

其实你可以调用 String() 与任意参数

let s = String(foo: 1, bar: "baz")
print(s) // (1, "baz")

Swift 2。这不能编译在 Swift 1.2,所以我不知道如果这有意或无意。我已经在苹果开发者论坛,贴了一个问题︰

官方微信
官方QQ群
31647020