<< スクリプトでWeb仮想ディレクトリを作成するには | main | [Ajax] AJAX向けライブラリいろいろ >>

2007/01/26 (金)

JSONとJavaScriptオブジェクトリテラルの覚書

【特徴】
・JSON(JavaScript Object Notation)
・JSONはJavaScriptオブジェクト・リテラルから派生した軽量サブセットな構造化データフォーマット。
・ゼロ個以上のプロパティ名と値のペアリスト。
・プリミティブタイプ(string,number,boolean,null)と構造化タイプ(objects,arrays)を表すことができる。

◇objectタイプ書式
 object = { string : value }  
 object = { string : value , string : value , ...}

◇array タイプ書式
 array = [ value , value ]
 array = [ value , value , ...]

◇object+array(連想配列)
 object =
 [
  { string1-1 : value1-1, string1-2 : value1-2, …},
  { string2-1 : value2-1, string2-2 : value2-2, …},
    …
  { stringN-1 : valueN-1, stringN-2 : valueN-2, …}
 ]

【JSON例】
Ⅰ.var jsonObject = { "test":"hogehoge" }

 ①alert(jsonObject);
 ②alert(jsonObject.test);
 ③jsonobject.test = "test2";alert(jsonObject);

---------------------------------------------------------

Ⅱ.var jsonObject =
 {
  "test1":"hogehoge1",
  "test2":"hogehoge2"
 }

 ①alert(jsonObject.test1);
 ②alert(jsonObject.test2);

---------------------------------------------------------

Ⅲ.JSONではメソッドも扱える
 ⅰ.var jsonObject =
  {
   "test1":"function(){alert('Hello World')}"
  }

  ①eval('var method='+ jsonObject.test1); //eval関数で解釈
   method();

 ⅱ.var jsonObject =
  {
   "test1":"function(arg){alert('Hello World'+ arg)}"
  }

  ①eval('var method='+ jsonObject.test1); //eval関数で解釈
   method('My Name');

---------------------------------------------------------

Ⅳ.入れ子にすると…

var myObject = {
  "name":"My Name",
  "kana":"My Kana",
  "favorite": [
    { "title":"favaroite1", "url","http://hoge1.com"},
    { "title":"favaroite2", "url","http://hoge2.com"},
  ]
}

====================================================

【JavaScriptオブジェクト・リテラル例】
objectsタイプ書式:
  jsobject = { string : "value" }  
  jsobject = { string : "value" , string : "value" , ...}

Ⅰ.var jsObject = { property1:"value1" , property2:"value2" }

 ①eval('var method='+ jsObject.property1);

====================================================

【相違点】
・JSONはプロパティ名と値の両方を「"」で括るのに対して
 JavaScriptオブジェクト・リテラルは値のみ「"」で括る。