首页 文章

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

提问于
浏览
9

我知道swiftyJSON方法exists()但它似乎并不像他们所说的那样工作 . 如何在下面这种情况下得到正确的结果?我无法更改JSON结构,因为我通过客户端的API获取此信息 .

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

输出:

response someKey exists

不应该打印,因为someKey不存在 . 但有时候这个密钥来自客户端的API,我需要找出它是否存在 .

1 回答

  • 19

    它在你的情况下不起作用,因为 json["response"] 的内容不是字典,它检查数组中的有效字典键 .

    使用字典,它可以工作,条件不会按预期执行:

    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")
        }
    }
    

相关问题