Tag Archives: json

Sublime Text 2のパッケージインストールメモ

2
Filed under Mac, 仕事ツール
Tagged as , , ,

評判のテキストエディタ Sublime Text 2 ですが、私もたまに使っています。
Google 日本語IMEとの相性が悪く、日本語入力の時とかはJedit Xを使っていて、完全に移行は出来ていませんが、テキストデータの整理とか整形には超便利!
パッケージをインストールして簡単に機能を拡張できるのも特徴です。
たまにインストールするのですが、毎回インストールの仕方を調べているので、メモしておきます。

パッケージコントールを開く

パッケージの管理はパッケージコントール(Package Control)というメニューで行うのですが、この開き方は2通り。
「”Preference”メニュー → “Package Control”」
か、
“command + shift + p” で開くウィンドウで”Package”と入力する。

インストールする

パッケージをインストールするときには、上記手順で出てきたメニューの中から、
“Package Control: Install Package” を選ぶ。
カーソルの上下+”Enter”で実行できるのも直感的でいいですね。
sublimetext2 install package
あとは出てくる項目から選ぶだけ。

PrettyJson

今回入れてみたのは “Pretty JSON” というパッケージ。
sublimetext2 pretty json

JSONの階層構造を見やすく整えてくれるというすぐれもので、テキストを選んで、Command+Control+J で一発!
sublimetext2 prettyjson cmd ctrl j

ここまで、エディタの再起動無しで出来るのがスバらしいですね!


[AD]

↓読みたい本としてカートに入れてある(1冊目)

プレゼンの極意はマンガに学べ

著者/訳者:三田 紀房

出版社:講談社( 2013-02-22 )

定価:

単行本(ソフトカバー) ( 234 ページ )

ISBN-10 : 4062181991

ISBN-13 : 9784062181990


↓読みたい本としてカートに入れてある(2冊目)

世界一大きな問題のシンプルな解き方――私が貧困解決の現場で学んだこと

著者/訳者:ポール ポラック

出版社:英治出版( 2011-06-14 )

定価:

Amazon価格:¥ 2,376

単行本(ソフトカバー) ( 336 ページ )

ISBN-10 : 4862761062

ISBN-13 : 9784862761064


JSONKitからNSJSONSerializationに移行

0
Filed under iOS SDK, Objective-C
Tagged as , , , , ,

iOS 5から、NSJSONSerializationApple Reference)というJSONを扱う機能が追加されています。
iOS 5がリリースされたのが2011年の10月12日。
iPhone 4S、iPhone 5なら最初からiOS 5なので、Torques Inc.では、これからのバージョンアップでは、iOS 5以降をサポート対応OSのとしても良いかと考えます
json160

JSONKitからNSJSONSerializationへ

ということで、JSONKitを使って読み込んでいたコードを変更することにしました。(JSONKitはARCに非対応ですしね!)
思っていた以上に簡単で、本当に下記のようなコピペでうまく動作しました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// with NSJSONSerialization
NSData*  data     = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError* error    = nil;
NSArray* jsonData = [NSJSONSerialization JSONObjectWithData:data
    options:0
    error:&error];
 
/*
// with JSONKit
JSONDecoder* jsonDecoder = [JSONDecoder decoder];
NSArray* jsonData    = [jsonDecoder
    objectWithUTF8String:(const unsigned char *)[jsonString UTF8String]
    length:[jsonString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
*/

上記コードで、NSArray* としている箇所は、NSDictionary* の可能性もあり、それは、jsonの内容によって決定します。
どちらの値で来るのか不明ならば、idで取得してコードで判定しましょう。

1
2
3
4
5
6
7
8
9
10
id jsonData = [NSJSONSerialization JSONObjectWithData:data
    options:0
    error:&error];
 
if( [jsonData respondsToSelector:@selector(objectForKey:)] ){
 // jsonData is NSDictionary*
}
else{
 // jsonData is NSArray*
}

しかし、iOS/iPhoneユーザーはOSアップデート率が高いから、本当に新機能を使いやすいですよね!
(An某roidとは大違い)


[AD]

↓最強のお勧めスタイラス Su-Pen(スーペン)!

↓買ってみたら、本当に良書!初心者から経験者までお勧め!

iPhone/iPad/iPod touchプログラミングバイブル―iOS 5/Xcode 4対応 (smart phone programming bible)

著者/訳者:布留川 英一

出版社:ソシム( 2011-11 )

定価:

単行本 ( 527 ページ )

ISBN-10 : 4883377954

ISBN-13 : 9784883377954


iOSアプリでJSONを読み込む! – SBJson

1
Filed under iOS SDK, iPhoneアプリ
Tagged as , , ,

Objective-C向けのJSONを扱うライブラリを探してみたのですが、JSONのページによるとJSON解析ライブラリはいくつかあるようです。

json-frameworkというのがトップに紹介されており、また、ライセンスも修正BSDライセンスですので、これを使ってみることにしました。
現在は、SBJsonという名前に変わっているようです。

GitHubから取得

適当な場所で次のようにコマンドをタイプします。

$ git clone git://github.com/stig/json-framework.git

これで json-framework/ というディレクトリが作成され、その中にライブラリソースやサンプルソースがダウンロードされます。
(ちなみに、Mac OS XでGit環境を整えた時のメモはこちら→「Gitを使ってみた « TORQUES LABS」
上記コマンドでダウンロードしてきた中にはサンプルコード”Examples”があるので、使い方の参考になります。

SBJsonを使ってみる

上記Examplesの中には2つのサンプルプロジェクトがありますが、参考になるのはTweetStreamというサンプル。NSURLRequestを使った非同期通信での使い方が分かります。
JSONの読込完了時に呼ばれるのは、- (void)parser:(SBJsonStreamParser*)parser foundObject:(NSDictionary*)dict というメソッドなので、受信後の処理はここに書けば良さそうです。
SBJsonを使うと、JSONオブジェクトは、NSDictionaryとNSArrayの組みわせになります。ルート部分が上記メソッドの引数 (NSDictionary*)dict となります。
試しにGoogleカレンダーのサンプルJSONで試してみました。
http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json
このURLにアクセスして取得できるJSONの一部をコピペすると下記のような構造になっています。
(後述する操作説明のために、feedの下にtestValueという値を追加しています。)

{
  version: "1.0"
  encoding: "UTF-8"
  -
  feed: {
    testValue: 3
    id: {
      $t: http://www.google.com/calendar/feeds/developer-calendar%40google.com/public/full
    }
    -
    link: [
      -
      {
        rel: "alternate"
        type: "text/html"
        href: http://www.google.com/calendar/embed?src=developer-calendar@google.com
      }
      -
      {
        rel: http://schemas.google.com/g/2005#feed
        type: "application/atom+xml"
        href: http://www.google.com/calendar/feeds/developer-calendar%40google.com/public/full
      }
    ]
  }
}

この中の値を取得するコードを載せておきます。

“encoding”の値を出力してみる

ここは普通にNSDictionaryとしてアクセスできますので次のようなコードになります。

NSLog(@"%@", [dict objectForKey:@"encoding"]);

“feed”の下の”link”の値を出力してみる

ここは2階層目がNSArrayなので、次のようなコードでループを回すことが出来ます。

NSDictionary* feed     = [dict objectForKey:@"feed"];
NSArray*      links    = [feed objectForKey:@"link"];
NSEnumerator* enumLink = [links objectEnumerator];
NSDictionary* item;
while (item = (NSDictionary*)[enumLink nextObject]) {
  NSLog(@"%@", [item objectForKey:@"href"]);
}

Number値をintとして取得

NSDictionary* feed = [dict objectForKey:@"feed"];
int testValue      = [[feed objectForKey:@"testValue"] intValue];

SBJsonWriterでデバッグ出力

デバッグなどでJSONの中身をザックリと確認したい時にはSBJsonWriterというクラスが用意されているので、これを使って次のように簡単にデバッグ出力が可能です。

// debug.
SBJsonWriter*	writer = [[[SBJsonWriter alloc] init] autorelease];
writer.humanReadable   = YES;
writer.sortKeys        = YES; // キーをソート.
NSLog(@"%@", [writer stringWithObject:dict]);

参考サイト


[AD]
↓新モバイルブースター。iPadの充電に対応できているし、容量もアップ!充電速度もアップ!

↓これは!!!!SIMの抜き差しが多い人には超便利!

↓緊急時用のライトもこれなら普段から出しておける!

Regoraito: lantern / foot yellow (japan import)

Regoraito: lantern / foot yellow (japan import)

カテゴリ:おもちゃ&ホビー



↓手をグルグル回して充電可能!