JavaScript オブジェクトとしての JSON
「JavaScript を利用して変換」コンバータを含むステップ内のコンバータ スタックについて考えます。このコンバータは、コンバータで使用される JavaScript で使用するために名前付き INPUT という変数で、前のコンバータからの出力値にアクセスします。INPUT 変数の値は、常に文字列です。
次の表は、INPUT 変数の可能な変換値を示しています。
INPUT 値 |
JavaScript (OUTPUT =) |
結果 (OUTPUT 値) |
---|---|---|
5 |
OUTPUT = INPUT |
5 |
5 |
OUTPUT = INPUT + 3 |
53 |
5 |
OUTPUT = eval(INPUT) |
5 |
5 |
OUTPUT = eval(INPUT) + 3 |
8 |
5 |
OUTPUT = eval(INPUT + 3) |
53 |
5 |
OUTPUT = eval(INPUT +「 + 3") |
8 |
[1,2,3] |
OUTPUT = INPUT[0] |
[ |
[1,2,3] |
OUTPUT = eval(INPUT)[0] |
1 |
{ “a”: 5 } |
OUTPUT = eval(INPUT).a |
“Syntax Error” |
{ “a”: 5 } |
OUTPUT = eval("var x=" + INPUT + "; x;").a; |
5 |
JSON を JavaScript に変換する場合は、以下のことに注意してください。
- INPUT は文字列値になる変数です。したがって、INPUT で実行する操作はすべて文字列操作です。たとえば、+ は文字列を連結するものです。これが、上記の例で INPUT + 3 が 53 になる理由です。
- 関数 "eval" は正しい JavaScript のみを入力として受け入れます。このため、上記最後の例では、構文上正しくない JavaScript 行 {"a":5} と異なり、正しい構文である var x = {"a":5} では正常に結果が返ります。