web-dev-qa-db-ja.com

jsonにキーのない配列が含まれている場合にswiftyJSONにキーが存在するかどうかを確認する方法

SwiftyJSONメソッドexists()については知っていますが、彼らが言うように常に機能するとは限りません。この場合、どうすれば適切な結果を得ることができますか?クライアントのAPIを介して取得しているため、JSON構造を変更できません。

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

出力:

応答someKeyが存在します

SomeKeyが存在しないため、印刷しないでください。しかし、そのキーがクライアントのAPIから取得されることがあり、それが存在するかどうかを確認する必要があります。

11
Kocio

_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")
    }
}
_
27
Eric Aya