C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

--/--/-- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
タグ:
トラックバック(-) | コメント(-) | このエントリーを含むはてなブックマーク
2006/08/29 21:24
ちょっと前から気になっていたので、ネットで色々調べてみた。

JSONとはJavaScript Object Notationの略で、JavaScriptとの親和性が非常に高いデータ交換フォーマットである。
詳しくは↓
The application/json Media Type for JavaScript Object Notation (JSON)
Introducing JSON  (→日本語翻訳ページ
JSON in JavaScript (→日本語翻訳ページ

JSONは、前回の記事で書いたオブジェクトの表記方法を応用している。
種を明かせば、例のオブジェクト表記方法を文字列化してデータのやり取りを行い、JavaScriptのeval関数でJavaScriptコードに変換(=オブジェクトに変換)するという仕組み。eval関数にJSONを渡す際は、JSONを文字列"()”で囲む必要がある。
ただ、気をつけなければいけない点がいくつか。


  • プロパティ名(リンク先に倣えば"名前")は、文字列として記述すること。

  • オブジェクト(リンク先に倣えば”値”)には、数値,Boolean値,文字列,null参照、またはこれらのみで構成される配列,オブジェクトのみ許可されている。当然だけど関数はダメ。


eval関数の性質上、これらを無視してもオブジェクトに変換することはできるが、極端な話それはJSONとは言えない。
ちなみに、JSONファイルの拡張子は.jsonである。

JSON形式のファイルを記述する例を以下に記述する。

Hoge.json{
    "piyo": "test",
    "hogera":
    {
        "foo": true,
        "bar": [10, 20, 30, 40, 50]
    }
}


Hoge.jsonをJavaScriptコードで扱う例を以下に記述する。

Hoge.jsonを扱う例function jsonControlSample(json)
{
    var hoge = eval("(" + json + ")");
    var message = "";
    message += hoge.piyo + "¥r¥n";
    message += hoge.hogera.foo + "¥r¥n";
    for (var i = 0; i < hoge.hogera.bar.length; i++)
    {
        message += hoge.hogera.bar[i] + "¥r¥n";
    }
    alert(message);
}


なお、eval関数は文字列をJavaScriptのコードに変換(して実行)する関数であるため、受け取ったJSONの中身が実は危険なJavaScriptコードを文字列化したものであったりしても、そのままコードが実行されてしまう。冒頭のリンク先にも書いてある通り、eval関数を用いるより、json.jsのJSON parserを使用した方が安全である。json.jsには、JavaScriptのオブジェクトをJSONに変換するJSON stringifierも含まれている。
スポンサーサイト
タグ: Ajax JSON JavaScript
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。