我有这个例子:
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
对象吗?
由于
答案 0 :(得分:0)
commands
中的问题是整数,50022
和50025
。在我的代码中,它们是在enum
UInt32
中定义的。当我将它们复制到游乐场进行验证时,Swift会将其转换为Int
。这就是为什么我总是在游乐场取得成功。
回到我的代码,Swift 3期望一个数字为Int
,以便成功地将其转换为JSON对象。 Swift 2没有这种行为。
因此,在我将enum
定义从UInt32
更改为Int
后,它的效果非常好!
谢谢大家。