前提・実現したいこと
HotPepperのグルメサーチAPIから返ってきたJSONをデコードしたい。
Swift初学者でして、ネストしたJSONを構造体に変換する部分がうまくいきません。
解決方法をお教えいただけますと幸いです。
発生している問題・エラーメッセージ
Fatal error: 'try!' expression unexpectedly raised an error: Swift.DecodingError.keyNotFound(CodingKeys(stringValue: "shop", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"shop\", intValue: nil) (\"shop\").", underlyingError: nil))
該当のソースコード
JSONのデータ構造は下記です。
JSON
1{ 2 results: { 3 shop: [ 4 { 5 id: "12345678", 6 name: "割烹 吉田", 7 name_kana: "かっぽうよしだ", 8 large_area: { 9 name: "東京", 10 }, 11 address: "東京都新宿区新宿", 12 13 14 }, 15 { 16 id: "87654321", 17 name: "割烹 池田", 18 name_kana: "かっぽういけだ", 19 large_area: { 20 name: "東京", 21 }, 22 address: "東京都い豊島区池袋", 23 24 25 } 26 ] 27 } 28}
Swift
1struct ResultData: Decodable { 2 let shop: [Shop] 3 4 struct Shop: Decodable { 5 let id: Int 6 let name: String 7 } 8} 9 10 11URLSession.shared.dataTask(with: url) { data, response, error in 12 DispatchQueue.main.async { 13 _ = try! JSONDecoder().decode(ResultData.self, from: data!) 14 } 15}.resume() 16 17
試したこと
とりあえず、idとnameだけデコードしようとしたのですが、上記エラーが出てしまいました。
補足情報(FW/ツールのバージョンなど)
- Xcode Version 11.2
- Apple Swift version 5.1
- macOS catalina version 10.15.1
説明に不足等ございましたら、ご指摘いただければと思います。
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/06 12:18 編集
2019/11/06 16:50