前提・実現したいこと
SwiftでJSON形式のデータを取得し、パースしようとしているのですが上手くいきません。
API: 小説家になろうAPI (https://dev.syosetu.com/man/api/)
https://api.syosetu.com/novelapi/api/?out=json&order=hyoka&of=t-n-u-w-s-gp-gl
APIから受け取ったJSON
[ { "allcount": 600319 }, { "title": "無職転生 - 異世界行ったら本気だす -", "ncode": "N9669BK", "userid": 288399, "writer": "理不尽な孫の手", "story": "34歳職歴無し住所不定無職童貞のニートは、ある日家を追い出され、人生を後悔している間にトラックに轢かれて死んでしまう。目覚めた時、彼は赤ん坊になっていた。どうやら異世界に転生したらしい。\n 彼は誓う、今度こそ本気だして後悔しない人生を送ると。\n\n【2015年4月3日23:00 完結しました】\n\n\n\n 完結後の番外編はこちらで連載中です。\n 無職転生 - 蛇足編 -\nhttp://ncode.syosetu.com/n4251cr/", "general_lastup": "2015-04-03 23:00:00", "global_point": 458346 }, { "title": "ありふれた職業で世界最強", "ncode": "N8611BV", "userid": 386841, "writer": "厨二好き/白米良", "story": "クラスごと異世界に召喚され、他のクラスメイトがチートなスペックと“天職”を有する中、一人平凡を地で行く主人公南雲ハジメ。彼の“天職”は“錬成師”、言い換えればただの鍛治職だった。最弱の彼は、クラスメイトにより奈落の底に落とされる。必死に生き足掻き、気がつけば世界最強・・・というありがちストーリー。最強物を書きたくて書きました。テンプレを多分に含みます//本編完結しました//書籍版8巻、外伝零2巻、漫画版3巻、日常版1巻、漫画版零1巻発売中です//コミックガルドにて各コミック無料配信中//アフターストーリー投稿中です", "general_lastup": "2018-10-06 18:00:00", "global_point": 407313 }, { "title": "転生したらスライムだった件", "ncode": "N6316BN", "userid": 311735, "writer": "伏瀬", "story": "突然路上で通り魔に刺されて死んでしまった、37歳のナイスガイ。意識が戻って自分の身体を確かめたら、スライムになっていた!\nえ?…え?何でスライムなんだよ!!!などと言いながらも、日々を楽しくスライムライフ。\n出来る事も増えて、下僕も増えて。ゆくゆくは魔王でも目指しちゃおうかな?\nそんな、どこかずれた天然主人公の異世界スライムライフです。\n※本編完結済み。\n 番外編は、人によっては蛇足。", "general_lastup": "2016-01-01 00:00:00", "global_point": 397260 },... ]
該当のソースコード
Swift
1import Foundation 2 3struct NovelOverviewModel: Codable { 4 let title: String 5 let ncode: String 6 let userid: String 7 let writer: String 8 let story: String 9 let general_lastup: Date 10 let global_point: Int 11}
Swift
1import Alamofire 2 3class NarouAPI { 4 5 var baseURL: String 6 7 init() { 8 baseURL = "https://api.syosetu.com/novelapi/api/" 9 } 10 11 func getTitles() { 12 let parameters: Parameters = [ 13 "out" : "json", 14 "order" : "hyoka", 15 "of" : "t-n-u-w-s-gp-gl" 16 ] 17 18 Alamofire.request(baseURL,method: .get, parameters: parameters, encoding: JSONEncoding.default).response { response in 19 guard let data = response.data else { return } 20 let overviewModels: [NovelOverviewModel] = try! JSONDecoder().decode([NovelOverviewModel].self, from: data) 21 22 } 23 } 24} 25
試したこと
JSONの一つ目の要素( {allcount:})をパースする際にエラーが起きると思い、そこを消してからパースしようとしましたが やり方がわかりませんでした。
補足情報
Alamofire, Codable, Swift 4.2
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/10 05:26
2018/10/10 09:50