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

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

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

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

JSON

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

Q&A

解決済

2回答

5941閲覧

Objective-CからのJsonデータ取得

Kuririn

総合スコア10

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

JSON

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

0グッド

1クリップ

投稿2016/06/22 00:04

###前提・実現したいこと
Json形式で書かれた配列をObjective-cで取得したいのですが、
配列の要素をキー取得するのではなく、指定した配列の要素を全て取得するにはどうしたらいいのでしょうか。

<期待値>
下の例で言うと、itemの中のiPhone情報が欲しいと思った時、ここの部分の情報を取得したいのです。
{
"Name": "iPhone",
"Detail": "Apple",
"Value": "50000"
}

プログラミングを始めて間もなく、言葉足らずな点が多いとは思いますが、ご回答よろしくお願いいたします。

###ソースコード

// Json { "item": { "ios":[ { "Name": "iPhone", "Detail": "Apple", "Value": "50000" } ], "Android": [ { "Name": "Nexus", "Detail": "Google", "Value": "23500" } ] } }

###補足
今回はObjective-cでの書き方を質問していますが、そもそもJsonの書き方が血迷ってる場合は、それについて指摘いただけたらと思います。
ちなみにJson取得についてはNSURLSessionを使用しています。

以上です。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんな感じでNSDictionaryにすればキー名で簡単にアクセスできます。

objective

1NSString *json = @"{ \"item\": {(以下略)"; 2 3//NSData化 4NSData *data = [json dataUsingEncoding:NSUTF8StringEncoding]; 5//パース 6NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 7//NSLog(@"%@", dic); 8NSLog(@"ios=%@", dic[@"item"][@"ios"]); 9NSLog(@"Android=%@", dic[@"item"][@"Android"]);

出力

ios=( { Detail = Apple; Name = iPhone; Value = 50000; } ) Android=( { Detail = Google; Name = Nexus; Value = 23500; } )

投稿2016/06/22 01:20

fuzzball

総合スコア16731

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

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

Kuririn

2016/06/22 03:00

ありがとうございます! 求めていたものが伝わってよかったです!笑
Kuririn

2016/06/22 03:58 編集

結局NSURLSessionをやめて、NSURLConnectionにしたのですが、これでは何か不足なのですかね? ログがNullになります。 ``` NSString *url = @"http://~~~/.json”; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; NSData *json = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@", dic[@"iOS"][@"Name"]); ```
fuzzball

2016/06/22 04:25 編集

NSURLConnectionにする前と同じJSONデータでしょうか? NSLog(@"%@", dic); の出力を教えて下さい。 ちなみに、NSURLConnectionはiOS9でdeprecatedになったのでNSURLSessionの方が良いと思いますが‥。
Kuririn

2016/06/22 05:22

Jsonの出力については、できました!(お恥ずかしながらタイポでした。。) すみません(T ^ T) NSURLSession使った方がいいんですね、、 でもNSURLConnectionの方が簡単な気がして、、 いまいちNSURLSessionの書き方がわからないんです(T ^ T)
Kuririn

2016/06/22 06:25

そうですね!一通りできたら描きなおそうと思います! 本当にありがとうございます!
guest

0

NSJSONSerializationを使えば、JSONはNSDictionaryとNSArrayに分解されます。
https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSJSONSerialization_Class/

投稿2016/06/22 01:06

masaya_ohashi

総合スコア9206

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

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

Kuririn

2016/06/22 02:59

すみません、私の知識足らずで申し訳ないのですが、分解とはどうゆうことでしょうか? Jsonから取得した配列をNSDictionaryとNSArrayの両方で扱えるということですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問