デコード処理する際のエラー
下記の様なエラーってよく起こりますよね。
このエラーの原因は変換先の構造体の作りが間違っているからなんです。
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したらこんなかんじでした。
便利な世の中になりましたね〜〜
以上