Swift 3 - [[String:Any]]的无效JSON对象

时间:2016-10-13 11:41:43

标签: arrays dictionary swift3

我有这个例子:

var commands = [[String: Any]]()

经过一些计算,其结果是:

[["command": 50022, "homes": [["gateways": [["mac": "845DD74B405E", "services": [["iid": 9, "name": "Some name"]], "aid": 1]], "name": "H1"]]], ["command": 50025, "services": [["mac": "845DD74B405E", "iid": 9, "aid": 1, "new_name": "Some name"]]]]

我想使用SwiftyJSON将其转换为{commands)到JSON:

let json = JSON(commands)
print(json) // "unknown"

但结果始终是unknown

然后我检查commands的有效性,以确保它是JSON可转换的。但我得到了false JSONSerialization.isValidJSONObject(commands),这是出乎意料的!

您有什么想法commands(词典数组)不是有效的JSON对象吗?

由于

1 个答案:

答案 0 :(得分:0)

commands中的问题是整数,5002250025。在我的代码中,它们是在enum UInt32中定义的。当我将它们复制到游乐场进行验证时,Swift会将其转换为Int。这就是为什么我总是在游乐场取得成功。

回到我的代码,Swift 3期望一个数字为Int,以便成功地将其转换为JSON对象。 Swift 2没有这种行为。

因此,在我将enum定义从UInt32更改为Int后,它的效果非常好!

谢谢大家。