Swift

【Swift】Null安全なJSON変換

サーバから落としてきたデータをJSONにエンコードし、Dictionary型に変えたい時、

guard let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : String] else {
    return
}

これだとError: Value of optional type '[String:Any]?' not unwrappedというエラーが出てしまう。原因は、コンパイラが

try? (JSONSerialization.jsonObject(with: data, options: []) as? [String : String])

と解釈してしまうため。調べてみるとこんなやり方があったのでメモ。パターンマッチを使ってオプショナルバインディングする方法。

guard case let json?? = try? JSONSerialization.jsonObject(with: data) as? [String:Any] else {
    return
}