- object
- { members }
{}
- members
- string : value
members , string :
value
- array
- [ elements ]
[]
- elements
- value
elements , value
- value
- string
number
object
array
true
false
null
引用from:『
Introducing JSON』
JSON (JavaScript Object Notation) は、軽量なデータ交換フォーマットです。それは、人間にとって読みやすく、書きやすく、また、機械にとっても解析と生成の容易な形式です。JavaScript(ECMAScript)にもとづくサブセットです。
JSONは言語から完全に独立したテキスト形式ですが、C言語ファミリーのプログラマにとって、なじみ深い慣習を使用します、C、C++、C#、Java、JavaScript、Perl、Python、他。。
これらの特性はJSONを理想的なデータデータ交換言語にします。
『Introducing JSON
http://www.crockford.com/JSON/index.html』
JSONのオブジェクト
JSONはECMA262に定義された JavaScriptのオブジェクト・リテラルから派生した、テキスト形式の構造化データフォーマットです。
JSONは4つのプリミティブタイプ(strings, numbers, booleans,and null)と
2つの構造化されたタイプ(objects and arrays)を表すことができます。
objectsタイプの書式は、object = { string : value }とかobject = { string : value,string : value,... }という感じ。
arraysタイプの書式は、array = [ value,value ]とか[value,value,...]という感じ。
JavaScriptの縮小版ですから受信したデータはJavaScriptとしてさくさく使うことができます。
オブジェクト
プロパティ
メソッド
メソッド (引数)
なにはともあれテストしてみましょう。
オブジェクト
まずデータ交換する前に、スクリプト内での動作を確認します。たとえば、次のようなJSONフォーマットに基づいたスクリプトを用意します。
var myJSONObject =
{
"test": "hello"
};
次に、この型をtypeofで調べてみます。
<script language = "JavaScript">
<!--
var myJSONObject =
{
"test": "hello"
}
//-->
</script>
<form>
alert( typeof myJSONObject )
<input type = "button"
onclick = "alert( typeof myJSONObject )"
value = "click">
</form>
どうですか?そう、オブジェクトなんです。じゃ、いろいろやってみましょう。
プロパティ
まず、オブジェクトのプロパティについて調べます。
<script language = "JavaScript">
<!--
var myJSONObject2 =
{
"test": "hello"
}
//-->
</script>
<form>
alert( myJSONObject2 )
<input type = "button"
onclick = "alert( myJSONObject2 )"
value = "click">
alert( myJSONObject2.test )
<input type = "button"
onclick = "alert( myJSONObject2.test )"
value = "click">
myJSONObject2.test = 'new test' ; alert( myJSONObject2.test )
<input type = "button"
onclick = "myJSONObject2.test = 'new test' ; alert( myJSONObject2.test )"
value = "click">
</form>
それでは、プロパティが複数あったときはどうでしょうか?
<script language = "JavaScript">
<!--
var myJSONObject3 =
{
"test1": "hello1",
"test2": "hello2",
"test3": "hello3"
}
//-->
</script>
<form>
myJSONObject3オブジェクトのtest1プロパティを取り出します
alert( myJSONObject3.test1 )
<input type = "button"
onclick = "alert( myJSONObject3.test1 )"
value = "click">
myJSONObject3オブジェクトのtest2プロパティを取り出します
alert( myJSONObject3.test2 )
<input type = "button"
onclick = "alert( myJSONObject3.test2 )"
value = "click">
myJSONObject3オブジェクトのtest3プロパティを取り出します
alert( myJSONObject3.test3 )
<input type = "button"
onclick = "alert( myJSONObject3.test3 )"
value = "click">
</form>
全く普通ですね。
メソッド
こうなると、オブジェクトのメソッドも試したくなりませんか?
<script language = "JavaScript">
<!--
var myJSONObject4 =
{
"test1": "function (){ alert('This is method test1') }"
}
//-->
</script>
<form>
myJSONObject4オブジェクトのメソッドtest1()を実行します
<input type = "button"
onclick = "eval(myJSONObject4.test1())"
onclick = "eval('a='+myJSONObject4.test1);a()"
value = "click">
</form>
*注意:JSONの構造化タイプはObjectとArrayだけです。このメソッドテストは、
valueとしてのfunctionの利用方法ということです。ただ、それをvalueのStringとすると、ドラフトによればクオートが必要な
ようなので追加してeval()するようにしてみました。(*書き間違えてましたf^^;; m(_ _)m)
メソッド (引数)
では、メソッドの引数はどう渡せば良いでしょう?
<script language = "JavaScript">
<!--
var myJSONObject5 =
{
"test2": "function (arg){ alert('This is a argument : '+arg) }"
}
//-->
</script>
<form>
myJSONObject5オブジェクトのメソッドtest2()に引数'hello'を与えて実行します<br>
<input type = "button"
onclick = "eval('var a='+ myJSONObject5.test2 +'');a('hello')"
value = "click">
<input type = "button"
onclick = "eval('('+ myJSONObject5.test2 +')(\'hello\')');"
value = "click">
</form>