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

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

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

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

Swift

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

Q&A

解決済

1回答

1630閲覧

Jsonデータのパースする量が多く、辞書型にキャストできない?

fromKennya

総合スコア16

iOS

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

Swift

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

0グッド

0クリップ

投稿2017/05/14 07:03

##試したいこと
分かりにくい題で申し訳ありません。
指定したURLでURLSession.shared.dataTaskをしたあと、
帰ってきたデータをパースして、辞書型にキャストしたいのですが、
データ量が非常に膨大(6400000key/valueと表示されました)で、
jsonデータを辞書型にキャストすることができません。

###該当のソースコード

// URL設定 let str = "https://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=XXXXXXXXXXXXXX&large_area=\(choosePrefecture)&keyword=\(freeword)&lat&lng&format=json" guard let encoUrl = str.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { return } guard let url = NSURL(string: encoUrl) else { return } let request = URLRequest(url: url as URL) // タスク実行 URLSession.shared.dataTask(with: request) { (data, response, error) in if let err = error { print("Failed to fetch the data because of ",err) return } do { self.storeInfo = [] guard let data = data else { return } let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) // json化したデータを[String:Any]にキャスト ※ここでjsonのデータ量が多すぎてキャストされず。次の処理が走ってしまう guard let storeDictionaries = json as? [[String:Any]] else { return } print(storeDictionaries) }catch let jsonErr { print("Failed to json",jsonErr) } }.resume()

###試したいこと
ホットペッパーAPIを使用しており、テキストフィールドに入力された情報を元に
dataTaskして帰ってきたdataを辞書型にする簡単な処理なんですが、なぜ該当部分で大量のデータが取得されてしまうのかが分かりません。
お助けお願いいたします。

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

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

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

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

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

TakeoAsai

2017/05/14 08:11

https://webservice.recruit.co.jp/hotpepper/ ... へ県番号とキーワードを埋めてブラウザでアクセスしてみてはいかがでしょう?もともとホットペッパーAPIは色々情報を返すので、何もおかしくない可能性があります。
fromKennya

2017/05/14 10:31

TakeoAsai様 ご回答ありがとうございます。おかげさまで原因が判明し無事パースできました。ありがとうございました。
fuzzball

2017/05/14 23:43

解決したのであれば質問をcloseして下さい。
fromKennya

2017/05/15 00:04

fuzzball様 closeし忘れておりました。申し訳ございません。
guest

回答1

0

自己解決

受け取ったJSONデータを辞書配列で格納しようとしていたところが間違えておりました。

投稿2017/05/15 00:03

fromKennya

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問