当json包含没有键的数组时,如何检查swiftyJSON中是否存在键

我知道有关swiftyJSON方法存在(),但它似乎并不总是像他们说的那样工作。 在这种情况下我如何得到正确的结果? 我不能改变JSON结构,因为我通过客户端的API来获取这个结构。

var json: JSON = ["response": ["value1","value2"]] if json["response"]["someKey"].exists(){ print("response someKey exists") } 

输出:

响应someKey存在

这不应该打印,因为someKey不存在。 但有时候,这个关键是来自客户端的API,我需要知道它是否存在。

它不起作用,因为json["response"]内容不是一个字典,而是一个数组。 SwiftyJSON无法检查数组中的有效字典密钥。

随着字典,它的工作原理,不会像预期的那样执行:

 var json: JSON = ["response": ["key1":"value1", "key2":"value2"]] if json["response"]["someKey"].exists() { print("response someKey exists") } 

解决您的问题是在使用.exists()之前检查内容是否确实是字典。

 if let _ = json["response"].dictionary { if json["response"]["someKey"].exists() { print("response someKey exists") } }