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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Swift

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

400閲覧

サーバーからのレスポンスを表示できません

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Swift

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1グッド

0クリップ

投稿2019/03/09 09:33

######サーバーサイドはphp7,クライアントはswift4です
######リクエストurlは正しいです。(ブラウザから確認)
#####受け取ったJSONデータをパース(解析)して格納のあと↓
print(data)で41 bytesが帰ってきました
print(error)はnil
print(json)もnil
41バイト分の何かを取得しているようですが、それをjsonに変換できていないように思います。どうすればjsonに変換できるでしょうか

swift

1import UIKit 2 3class ViewController: UIViewController, UITextFieldDelegate { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 textBar.delegate = self 9 textBar.placeholder = "next" 10 } 11 12 override func didReceiveMemoryWarning() { 13 super.didReceiveMemoryWarning() 14 // Dispose of any resources that can be recreated. 15 } 16 17 @IBOutlet weak var textBar: UITextField! 18 19 @IBOutlet weak var nowText: UILabel! 20 21 // データリスト 22 var dataList : [(date:String , time:String)] = [] 23 24 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 25 textField.resignFirstResponder() 26 if let queryKey = textField.text { 27 print(queryKey) 28 nowmesod(keyword: queryKey) 29 } 30 return true 31 } 32 33 struct ItemJson: Codable { 34 let date: String? 35 let time: String? 36 } 37 38 struct ResultJson: Codable { 39 let item:[ItemJson]? 40 } 41 42 // now メソッド 43 func nowmesod (keyword: String) { 44 // URLをエンコードする 45 guard let keyword_encode = keyword.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { 46 return 47 } 48 49 // リクエストURLの組み立て 50 guard let req_url = URL(string: "http://localhost/v1.php/now?query=(keyword_encode)") else { 51 return 52 } 53 print(req_url) 54 55 // リクエストに必要な情報を生成 56 let req = URLRequest(url: req_url) 57 // データ転送を管理するためにセッションを生成 58 let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue.main) 59 // リクエストをタスクとして登録 60 let task = session.dataTask(with: req, completionHandler: { 61 (data , response , error) in 62 // セッション終了 63 session.finishTasksAndInvalidate() 64 65 // do try catch エラーハンドリング 66 do { 67 // JSONDecoder のインスタンス取得 68 let decoder = JSONDecoder() 69 // 受け取ったJSONデータをパース(解析)して格納 70 let json = try decoder.decode(ResultJson.self, from: data!) 71 print(json) 72 // ResultJsonが取得てきているか確認 73 if let items = json.item { 74 self.dataList.removeAll() 75 for item in items { 76 if let date = item.date , let time = item.time { 77 let now = (date,time) 78 self.dataList.append(now) 79 // 表示 80 self.nowText.text = "(now)" 81 82 } 83 } 84 } 85 } catch { 86 print(error) 87 } 88 }) 89 task.resume() 90 } 91}
bochan2👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/09 09:45

なんで解決してないのに同じような質問を乱立するんですか?
退会済みユーザー

退会済みユーザー

2019/03/09 09:54

ゆとりだからさ
guest

回答1

0

返ってきたデータがJSONとしてvalidか確認して、validでなければそれを直してください
あと、ちゃんと望むデータが取れてるのかもですね。エラー文とかが返されてたりするかもしれませんよ。

投稿2019/03/09 21:18

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問