デコード処理する際のエラー

下記の様なエラーってよく起こりますよね。

このエラーの原因は変換先の構造体の作りが間違っているからなんです。

Jsonの戻り値をみて、いちいち構造体を作るのって大変ですよね。ネストが深ればなおさら。。

 let dtoApiDataList = try JSONDecoder().decode([dtoApiData].self, from: data!)
typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil)) (lldb) z

解決策

結論、ChatGPDを使いましょう!!

やり方はかんたん

jsonをSwiftの構造体にして

と言うだけ。

こんな感じで生成してくれます。

struct Post: Codable {
    let id: String
    let postDate: String

    enum CodingKeys: String, CodingKey {
        case id
        case postDate = "post_date"
    }
}

let jsonData = Data(jsonString.utf8)
do {
    let posts = try JSONDecoder().decode([Post].self, from: jsonData)
    print(posts)
} catch {
    print(error.localizedDescription)
}

構造体以降(let jsonData以降)は通信処理の中に記載してください。

ちなみにprintしたらこんなかんじでした。

便利な世の中になりましたね〜〜

以上

投稿者 nikudango

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です