質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1956閲覧

【swift】APIを受信して表示させたい

syosinsya_swift

総合スコア62

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/19 08:42

編集2019/07/19 08:53

前提・実現したいこと

APIを受信して画面に結果を表示させたいです。
JSONでデータは取れているのですが、そこからどう一つ一つ出していけばいいかわからず
教えてください。
使うAPIはこちらです。
https://api.gnavi.co.jp/api/manual/restsearch/

発生している問題・エラーメッセージ

import UIKit class ViewController: UIViewController { //エリア保持の変数 var area: String! // 取得したJSONを格納する変数 var getJson: NSDictionary! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } //タップ時のアクション @IBAction func onSearchTapped(_ sender: Any) { //URL設定 let url = URL(string: "https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=0xxxx")! let task = URLSession.shared.dataTask(with: url) { data, response, error in // ここのエラーはクライアントサイドのエラー(ホストに接続できないなど) if let error = error { print("クライアントエラー: (error.localizedDescription) \n") return } guard let data = data, let response = response as? HTTPURLResponse else { print("no data or no response") return } if response.statusCode == 200 { print(data) do { //dataをパースしてJSONを取得する self.getJson = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary for roop in self.getJson { //ここでデータを取り出したい } //遷移 DispatchQueue.main.async{ self.nextPage() } }catch{ print ("json error") return } } else { // レスポンスのステータスコードが200でない場合などはサーバサイドエラー print("サーバエラー ステータスコード: (response.statusCode)\n") } } task.resume() } //遷移 func nextPage() { let nextVC = storyboard?.instantiateViewController(withIdentifier: "TableTableViewController")as! TableTableViewController nextVC.getJson = self.getJson show(nextVC, sender: true) } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/07/19 08:48

このままではコードが見づらいので、質問を編集し、<code>ボタンを押し、出てくる'''の枠の中に貼り付けてください。 また、質問のタイトルが間違ってると思いますが、こちらも修正願います
takabosoft

2019/07/19 08:49

アクセスキーが質問欄に記載されていますが、セキュリティ的に大丈夫ですか?
takabosoft

2019/07/19 08:55

とりあえず print(self.getJson) としてみて、コンソールに期待した結果が出力されるかどうかは確認したでしょうか?
syosinsya_swift

2019/07/19 08:57

print(self.getJson) では取得できています
takabosoft

2019/07/22 00:39

それで出た内容を貼ってもらうことはできますか?
syosinsya_swift

2019/07/22 08:36

ありがとうございます。 decodeができていない状態です。 添付いたします。 ```swift { "@attributes" = { "api_version" = v3; }; "hit_per_page" = 10; "page_offset" = 1; rest = ( { "@attributes" = { order = 0; }; access = { line = "\Uff2a\Uff32"; note = ""; station = "\U6e0b\U8c37\U99c5"; "station_exit" = ""; walk = 1; }; address = "\U3012150-0043 \U6771\U4eac\U90fd\U6e0b\U8c37\U533a\U9053\U7384\U57421-5-9 \U30b6\Uff65\U30ec\U30f3\U30ac\U30d3\U30eb5F"; budget = 3000; category = "\U5168\U5e2d\U500b\U5ba4\U306e\U9244\U677f\U713c\U5c45\U9152\U5c4b"; code = { areacode = AREA110; "areacode_s" = AREAS2126; areaname = "\U95a2\U6771"; "areaname_s" = "\U9053\U7384\U5742\U30fb\U795e\U6cc9"; "category_code_l" = ( RSFST09000, "" ); "category_code_s" = ( RSFST09004, "" ); "category_name_l" = ( "\U5c45\U9152\U5c4b", "" ); "category_name_s" = ( "\U5c45\U9152\U5c4b", "" ); prefcode = PREF13; prefname = "\U6771\U4eac\U90fd"; }; "coupon_url" = { mobile = "http://mobile.gnavi.co.jp/shop/e944802/coupon"; pc = "https://r.gnavi.co.jp/e944802/coupon/"; }; "credit_card" = "VISA,MasterCard,UC,DC,UFJ,\U30c0\U30a4\U30ca\U30fc\U30b9\U30af\U30e9\U30d6,\U30a2\U30e1\U30ea\U30ab\U30f3\U30fb\U30a8\U30ad\U30b9\U30d7\U30ec\U30b9,JCB,NICOS,\U30aa\U30ea\U30b3,\U30a2\U30d7\U30e9\U30b9,\U30bb\U30c7\U30a3\U30caCF,\U30e9\U30a4\U30d5,\U697d\U5929,\U30bb\U30be\U30f3,\U30a4\U30aa\U30f3,\U30a8\U30dd\U30b9,NC,JAL,MUFG,Discover Card"; "e_money" = ""; fax = "03-6416-4895"; flags = { "mobile_coupon" = 1; "mobile_site" = 1; "pc_coupon" = 1; }; holiday = "\U7121\n\U203b\U90fd\U5408\U306b\U3088\U308a\U5909\U66f4\U3059\U308b\U5834\U5408\U3082\U3054\U3056\U3044\U307e\U3059\U3002\U3054\U4e86\U627f\U304f\U3060\U3055\U3044\U3002"; id = e944802; "image_url" = { qrcode = "https://c-r.gnst.jp/tool/qr/?id=e944802&q=6"; "shop_image1" = "https://uds.gnst.jp/rest/img/61wpkk3h0000/t_0nk0.jpg"; "shop_image2" = "https://uds.gnst.jp/rest/img/61wpkk3h0000/t_0ngd.jpg"; }; latitude = "35.658176"; longitude = "139.699367"; lunch = ""; name = "\U5168\U5e2d\U500b\U5ba4\U3068\U9244\U677f\U713c\U5c45\U9152\U5c4b \U304b\U308f\U3089\U5c4b"; "name_kana" = "\U30bc\U30f3\U30bb\U30ad\U30b3\U30b7\U30c4\U30c8\U30c6\U30c3\U30d1\U30f3\U30e4\U30ad\U30a4\U30b6\U30ab\U30e4\U30ab\U30ef\U30e9\U30e4"; opentime = "\U91d1\U30fb\U795d\U524d\U65e5 15:00\Uff5e\U7fcc4:00(L.O.3:00\U3001\U30c9\U30ea\U30f3\U30afL.O.3:30)\n\U6708\Uff5e\U6728 15:00\Uff5e24:00(L.O.23:00\U3001\U30c9\U30ea\U30f3\U30afL.O.23:30)\n\U571f 13:00\Uff5e\U7fcc2:00(L.O.1:00\U3001\U30c9\U30ea\U30f3\U30afL.O.1:30)\n\U65e5\U30fb\U795d\U65e5 13:00\Uff5e24:00(L.O.23:00\U3001\U30c9\U30ea\U30f3\U30afL.O.23:30)"; "parking_lots" = ""; party = 4000; pr = { "pr_long" = "\U500b\U5ba4\U3067\U9244\U677f\U713c\U304d\U3084\U5275\U4f5c\U4e32\U306a\U3069\U540d\U7269\U6599\U7406\U3092\U304a\U697d\U3057\U307f\U304f\U3060\U3055\U3044\Uff01\n\U5973\U5b50\U4f1a\U3084\U61c7\U89aa\U4f1a\U3001\U8a95\U751f\U65e5\U30fb\U8a18\U5ff5\U65e5\U3001\U590f\U306e\U540c\U7a93\U4f1a\U306a\U3069\U69d8\U3005\U306a\U3054\U5bb4\U4f1a\U306b\U25ce\n\n\U25c62H\U98f2\U307f\U653e\U984c\U4ed8\U30b3\U30fc\U30b9\n\U30fb\U6708\U30b3\U30fc\U30b94,000\U5186/\U51687\U54c1 \U30fb\U98a8\U30b3\U30fc\U30b94\U3001500\U5186/\U51688\U54c1\n\U30fb\U82b1\U30b3\U30fc\U30b95\U3001000\U5186/\U51688\U54c1 \U30fb\U6975\U30b3\U30fc\U30b96,000\U5186/\U51689\U54c1\n\U203b10\U540d\U69d8\U4ee5\U4e0a\U3067\U5e79\U4e8b1\U540d\U7121\U6599\U306a\U3069\U304a\U5f97\U306a\U30af\U30fc\U30dd\U30f3\U6709\n\U25c7\U304b\U308f\U3089\U5c4b\U306e\U9038\U54c1\n\U30fb\U307b\U3046\U308c\U3093\U8349\U30bd\U30c6\U30fc\U21d2\U5f53\U5e97\U306e\U540d\U7269\Uff01\U4e00\U5ea6\U98df\U3079\U305f\U3089\U3084\U307f\U3064\U304d\U306b\U306a\U308b\U98df\U611f\U3068\U5473\U308f\U3044\U266a\n\U30fb\U91ce\U83dc\U5dfb\U304d\U4e32\U21d2\U5973\U6027\U306b\U304a\U3059\U3059\U3081\Uff01\U65ec\U91ce\U83dc\U3092\U8c5a\U8089\U3067\U5dfb\U3044\U305f\U30d8\U30eb\U30b7\U30fc\U306a\U9038\U54c1\n\U30fb\U30a2\U30f3\U30ac\U30b9\U725b\U30b9\U30c6\U30fc\U30ad\U21d2\U98df\U3079\U3054\U305f\U3048\U629c\U7fa4\Uff013\U7a2e\U306e\U304a\U5869\U3067\U3054\U582a\U80fd\U3042\U308c\n\U25c6\U4eba\U6c17\U306e\U65e5\U672c\U30ef\U30a4\U30f3\n\U6599\U7406\U3068\U306e\U76f8\U6027\U25ce\U7a4f\U3084\U304b\U306a\U30a2\U30ed\U30de\U3067\U98f2\U307f\U3084\U3059\U304f\U3001\U521d\U5fc3\U8005\U3082\U304a\U6c17\U8efd\U306b\U304a\U697d\U3057\U307f\U3044\U305f\U3060\U3051\U307e\U3059\n\U25c7\U5168\U5e2d\U5b8c\U5168\U500b\U5ba4\n\U548c\U60c5\U7dd2\U306b\U5bcc\U3093\U3060\U843d\U3061\U7740\U3044\U305f\U500b\U5ba4\U3092\U5b8c\U5099\Uff01\U63a5\U5f85\U306b\U3082\U304a\U3059\U3059\U3081\n2\U540d\Uff5e80\U540d\U69d8\U307e\U3067OK/30\U540d\U69d8\U7528\U500b\U5ba4\U3082\U3054\U3056\U3044\U307e\U3059"; "pr_short" = "[\U30cd\U30c3\U30c8\U3067\U5373\U4e88\U7d04OK] \U6e0b\U8c37\U99c51\U5206\U306e\U5168\U5e2d\U500b\U5ba4\U306e\U9244\U677f\U713c\U304d\U5c45\U9152\U5c4b \U5275\U4f5c\U4e32\U3084\U30b9\U30c6\U30fc\U30ad\U3068\U591a\U5f69\U306a\U65e5\U672c\U30ef\U30a4\U30f3\U3092\U304a\U697d\U3057\U307f\U3044\U305f\U3060\U3051\U307e\U3059\U266a \U898b\U305f\U76ee\U3082\U697d\U3057\U3081\U308b\U590f\U9650\U5b9a\U30c9\U30ea\U30f3\U30af\U3082\U3054\U7528\U610f\Uff01"; }; tel = "050-3462-6294"; "tel_sub" = "03-6416-4894"; "update_date" = "2019-07-20T00:37:53+09:00"; url = "https://r.gnavi.co.jp/e944802/?ak=wj1dTsch3WCTOxwy9y7EbULX7fiiyflYD7eTRAl8P%2Bk%3D"; "url_mobile" = "http://mobile.gnavi.co.jp/shop/e944802/?ak=wj1dTsch3WCTOxwy9y7EbULX7fiiyflYD7eTRAl8P%2Bk%3D"; } ); "total_hit_count" = 1; } ```
guest

回答1

0

自己解決

Codableを使って自分で解決できました。ありがとうございました。

投稿2019/07/22 11:35

syosinsya_swift

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問