前提・実現したいこと
TeratailのAPIを使って、質問内容などを表示させるアプリを作成したいと考えております。
TeratailのJSONから取得したいもののみを取ってくる方法が分からず、悩んでおります。
ご教示いただければと思います。
発生している問題
取得したいJSON
{ meta = { "hit_num" = 226005; limit = 20; message = success; page = 1; "total_page" = 11301; }; questions = ( { "count_clip" = 0; "count_pv" = 0; "count_reply" = 0; created = "2019-12-12 15:53:38"; id = 229063; "is_accepted" = 0; "is_beginner" = 1; "is_presentation" = 0; modified = "2019-12-12 15:53:38"; tags = ( YOLO ); title = "Yolov3\U3067\U30aa\U30ea\U30b8\U30ca\U30eb\U306e\U5b66\U7fd2\U306e\U4ed5\U65b9\U6559\U3048\U3066\U304f\U308c\U307e\U305b\U3093\U304b"; user = { "display_name" = "tigreon.0102"; photo = "https://teratail-v2.storage.googleapis.com/uploads/avatars/u13/134972/KhYLyYBS_thumbnail.jpg"; score = 1; 〜〜〜長いので以下省略〜〜〜
こちらのJSONから、questions内のtitleを取得したいのですが、その方法が分からず、悩んでおります。
試したこと
以下の関数を使用して、["meta"]["questions"]をkey値にもつDictionary型は作れたのですが、さらにその中にあるvalueから該当部分のみを抽出する(今回の場合は、questions内のtitle)には、どのようにすればよろしいのでしょうか?
また、そもそもこの方法では該当部分を取り出すことはできないのでしょうか?
ご教示いただけると幸いです。
swift
1 2//GetTeratail.swift 3 4import Foundation 5 6struct getTeratailJson { 7 static func fetchQuestion(){ 8 guard let url = URL(string: "https://teratail.com/api/v1/questions") else {return} 9 let task = URLSession.shared.dataTask(with: url) { (data, response, error) in 10 11 do { 12 guard let data = data else {return} 13 let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as! [String:Any] 14 print(json["questions"]!) 15 } 16 catch { 17 print("error:", error) 18 } 19 } 20 task.resume() 21 } 22}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/12 08:05