FTU技術開発 〜 JSON

今日は難しくないのでよかった。JSONのお話*1


JSONJavaScript Object Notation - Wikipedia によると...

JSON(ジェイソン、JavaScript Object Notation)は、JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデータ記述言語である。

とある。ふむふむ。よくわかりませーん... 。・゚゚・(>_<;)・゚゚・。

よくよく調べてたらxmlのようなものらしい。という事は、webアクセスに対する出力結果としてやってくるわけですね。ふむふむ。
しかも、iOS用のjsonパーサのフレームワークが提供されているじゃないかー。SBJson for Objective-C ←ココ

しかも軽量という触れ込みも(本当かどうかは不明)。
これで行きましょう、ということで採用決定しました。


どうやら、

  • オブジェクト
  • 配列

の2つあるらしい。Foundation的に翻訳するなら、オブジェクトはNSDictionaryで、配列はNSArrayです。


では、これをどのように使うのか。
前回FTU技術開発 〜 GAE main.py - 335g memoのmain.pyを書き換えて説明します。Hello World文が以下ですね。

self.response.out.write("Hello World")

これを以下に置き換えてください。

data = {"name":"335g", "age":"20"}

info = "{"
info = info + "/"name/":" + "/"" + data.name + "/""
info = info + "," + "/"age/":" + "/"" + data.age + "/""
info = info + "}"

self.response.out.write(info)

そして、://[ID].appspot.com/ にアクセスすると、JSON形式で結果が出力されていると思います。
これは1つのオブジェクトでkeyがnameとageです。


以下まとめると、

オブジェクト (key:key, value:value)

{key:value}

配列 (value1, value2, value3)

[value1, value2, value3]

のような形式をJSON形式というそうです。ちなみに配列の中にオブジェクトを入れる事もできます。


非常にざっくりとしたJSON解説は以上です。
FTUにおいてJSONをどのように使うかというと、GAE内のデータを出力形式として使用という事です。
つまり処理の流れとしては

://test.appspot.com/ にアクセス
 → MainHandlerのgetメソッドを呼び出す
  → お望みのデータをJSON形式で出力する

といった流れです。


最後になりますが、JSON形式であるかどうかの確認用WEBアプリがあります。
JSONLint - The JSON Validator*2です。ちなみに私はOS X Lionの『Automator』にデスクトップでWebアプリを開ける機能がビルトインされました! | ライフハッカー[日本版]を参考に、アプリ化して使わせてもらってます。すっごく便利♪

今回出力方法をやったので、次回は取得方法...の前段階としてiOSのWEBアクセスライブラリ ASIHTTPRequest のご紹介です。

*1:不正確な記述も含まれているはずです。ご了承ください

*2:今、Safari5.1でアクセスしたアクセスできませんでした。Firefoxならオッケーなのを確認