このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
JavaScript のデータの種類には主に次のものがあります。
これらのデータのタイプをチェックするには、typeof 演算子を使うか、 Object.prototype.toString.call を使います。この他、配列に関しては Array.isArray が使えます。
var obj = [undefined, false,1,"a",null,[3,"b"],
{"t1":true, "t2":5, "t3":"c", "t4": [7,8],
"t5": {"t6":false, "t7":9, "t8":"d"}},()=>{}];
var test=[(x)=>x, (x)=> (typeof x),
(x)=>Object.prototype.toString.call(x),
Array.isArray, JSON.stringify];
for(var t of test){
console.log(t.name);
for(var i of obj){
console.log(t(i));
}
console.log('------');
}
undefined
false
1
a
null
[ 3, 'b' ]
{ t1: true,
t2: 5,
t3: 'c',
t4: [ 7, 8 ],
t5: { t6: false, t7: 9, t8: 'd' } }
[Function]
------
undefined
boolean
number
string
object
object
object
function
------
[object Undefined]
[object Boolean]
[object Number]
[object String]
[object Null]
[object Array]
[object Object]
[object Function]
------
isArray
false
false
false
false
false
true
false
false
------
stringify
undefined
false
1
"a"
null
[3,"b"]
{"t1":true,"t2":5,"t3":"c","t4":[7,8],"t5":{"t6":false,"t7":9,"t8":"d"}}
undefined
------
JavaScript には eval 関数という、文字列に対して、それをプログラム として解釈、実行する関数があります。 さらに、JavaScript は、関数を含め、様々なリテラルがあり、宣言文などの 文法に依存せずに、様々なデータ構造を式の中で定義できます。 そのため、複雑なデータ構造を定義する式を文字列で表現できれば、その 文字列を eval 関数で解釈してデータを取り出すことができます。 元々の JavaScript Object Notation(JSON)は、このようなアイディアで利用 されました。
var s='{name: "a", value: 3}';
eval("var obj = "+s);
しかし、eval 関数はリテラルの解釈だけでなく、JavaScript のあらゆる 機能を実行してしまうため、通信で使用する場合、情報のすり替えにより 任意のコードを実行されてしまう危険性があります。
JSON という単語には JavaScript という名前が含まれていますが、今や 多くのプログラミング言語で使用できるデータ構造になっています。 そのため、 RFC 8259 と ECMA-404 で規格化されました。
規格として、扱うデータ構造として以下のものを指します。
そして、この定義で示されるものだけを表す文字列が JSON となります。
null
10
"abc"
[3,"b",true]
{"name": "TDU", "value": 100 }
JavaScript ではこれらを扱うのに、2つのメソッドが用意されています。
授業など、意味のあるデータ構造に関して、JSON の構造を設計しなさい
設計したデータ構造について、JSON のデータ例を複数作成しなさい
設計したデータ構造について、JSON のデータ例を複数作成しなさい
JSON の文字列を受け取り、それをデータ構造として解釈し、整形して出 力するJavaScript のプログラムを作りなさい
データ構造を入力させ、それをJSON 文字列として出力するWebアプリケー ションを作成しなさい