前提・実現したいこと
下記のようなJsonデータがあります。
今回はid
,title
,moviename
3つのデータを取得し、articles
に格納したいです。
ただ"type": "movie"
の時のみmoviename
が入っているデータになるため、下記の通りコードを書きましたが、
"type": "picture"
の時はmoviename
のデータがないため、nil
となりエラーになってしまいます。
この場合はtype
をキーとして条件分岐させて取得するようなイメージになると思いますが、
具体的にどのようなコードを書けばいいのか分からず苦慮しております。
どなたかご教示いただけませんでしょうか?
該当のソースコード
JSON
1{ 2 "result": true, 3 "data": [ 4 { 5 "type": "movie", 6 "article": { 7 "id": "123", 8 "title": "タイトル1", 9 "moviename": "hogehoge" 10 } 11 }, 12 { 13 "type": "picture", 14 "article": { 15 "id": "456", 16 "title": "タイトル2" 17 } 18 } 19 ] 20}
ArticleListViewController
1 var articles: [Article] = [] { 2 didSet { 3 articleTableView.reloadData() 4 } 5 } 6 7 func getArticles() { 8 Alamofire.request("url").validate().responseJSON { response in 9 guard let object = response.result.value else { 10 return 11 } 12 let json = JSON(object) 13 json["data"].forEach { (_, json) in 14 let article: [String: Any?] = [ 15 "title": json["article"]["title"].string!, 16 "id": json["article"]["id"].string! 17 "moviename": json["article"]["moviename"].string! 18 ] 19 self.articles.append(Article(json: article)) 20 } 21 print(self.articles) 22 } 23 }
Article
1struct Article { 2 let title: String 3 let id: String 4 let moviename: String 5 6 init(json: [String: Any]) { 7 title = json["title"] as? String ?? "" 8 id = json["id"] as? String ?? "" 9 moviename = json["moviename"] as? String ?? "" 10 } 11 init() { 12 title = "" 13 id = "" 14 moviename = "" 15 } 16}
回答1件
あなたの回答
tips
プレビュー