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

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++と共存することが意図されています

Q&A

解決済

2回答

5209閲覧

[Swift]JSONの取得方法

RioNishino

総合スコア36

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++と共存することが意図されています

0グッド

0クリップ

投稿2015/04/20 08:25

MysqlのデータをPHPでJSONで出力し、Swiftで取得することまではできたのですが、そこから各データを解析することができません。

var url = NSURL(string: urlString)

var task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: {data, response, error in

var dict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary})

task.resume()

以上がJSONソ取得までのソースです。
JSONは以下のようになっています。

{
name = (Tanaka, Suzuki, Sato);
aga = (20, 30, 40);
pref = (Tokyo, Saitama, Kanagawa);
}

どのように「name」や「age」を取得すればよいのでしょか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

PHP側でのJSON出力はどのようになってますか?

lang

123echo json_encode(出力する配列);

lang

1let url: NSURL! = NSURL(string: "http://~/test.php") 2 3 var request: NSURLRequest! = NSURLRequest(URL:url!) 4 let json: NSData! = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) 5 //NSArray、もしくはNSDictionary(以下のクラスメソッドの戻り値はAnyObject型) 6 let array: NSArray! = NSJSONSerialization.JSONObjectWithData(json, options:NSJSONReadingOptions(), error: nil) as! NSArray

JSONは以下のような構造になると思います。

lang

1[//配列(NSArray) 2 {//連想配列(NSDictionary) 3 "name" = ["Tanaka","Suzuki","Sato"],//"name"をKeyとして取り出せるNSArray 4 "age" = ["20", "30", "40"],//"age"をKeyとして取り出せるNSArray 5 "pref" = ["Tokyo", "Saitama", "Kanagawa"]//"pref"をKeyとして取り出せるNSArray 6 }, 7 {//データが2つあるとすれば 8 "name" = ["Tanaka","Suzuki","Sato"], 9 "age" = ["20", "30", "40"], 10 "pref" = ["Tokyo", "Saitama", "Kanagawa"] 11 } 12]

上記の構造を取り出すには

lang

1let array: NSArray! = NSJSONSerialization.JSONObjectWithData(json, options:NSJSONReadingOptions(), error: nil) as! NSArray 2 3let dictionary: NSDictionary = NSDictionary(dictionary: array[欲しい要素番号] as! NSDictionary) 4let name: NSArray = NSArray(array: dictionary["name"] as! NSArray) 5NSLog("tanaka = \(name[0]), Suzuki = \(name[1]), Sato = \(name[2])")

結果
Tanaka = Tanaka, Suzuki = Suzuki, Sato = Sato

ビルドしてないのであってるかはわからないですが大体こんな感じです。

投稿2015/04/20 09:23

編集2015/04/20 09:24
at1994

総合スコア202

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

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

RioNishino

2015/04/20 10:02

おかげ様で解決できました。 いつも丁寧に解説していただき感謝しています。 まだ初心者なので説明不足だったり、間違っている箇所があると思いますが、 要点を汲み取って回答していただけるので、本当に助かっています。 ありがとうございます。
at1994

2015/04/20 12:05

解決できて何よりです!
guest

0

JSONは以下のようになっています。

{ name = (Tanaka, Suzuki, Sato); aga = (20, 30, 40); pref = (Tokyo, Saitama, Kanagawa); }

これはJSONではありませんね。

投稿2015/04/20 08:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

RioNishino

2015/04/20 10:03

申し訳ありません。 ご指摘ありがとうございます。
退会済みユーザー

退会済みユーザー

2015/04/20 10:03

いえ、お気になさらずに。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問