第20章、JSON
3090 ワード
20.1文法
JSONの文法は三つのタイプの値を表してもいいです.単純な値:JavaScriptと同じ文字列、数値、ブール値、nullを表しますが、特殊な値undefinedはサポートされていません.オブジェクト:キーパッドのペアは必要ありません.配列:順序値のリスト.JSONは変数、関数またはオブジェクトの例をサポートしていません.構造データを表す形式だけです.
20.1シンプル値
JSONは文字列をダブルクォーテーションする必要があります.シングルクォーテーションマークは文法エラーを引き起こします.他の単純な値はJavaScriptと同じです.
20.1.2オブジェクトと配列
JSONのオブジェクトの属性名にはダブルクォーテーションを付けます.JSONオブジェクトには変数が宣言されておらず、末尾の区切りがなく、同じオブジェクトに同名の属性が2つ現れません.JSON配列の文法はJavaScriptと同じですが、同じ変数とセミコロンもありません.
20.2解析と序列化
20.21プログレッシブ
JSONオブジェクトのstrigify()メソッドは、JavaScriptオブジェクトをJSON文字列に順序付けするために使用されます.デフォルトでは、出力されたJSON文字列にはスペース記号やインデントは含まれていません.すべての関数とプロトタイプは意図的に無視されます.値はundefinedの任意の属性もスキップされます.
JSON.parse()メソッドは、JSON文字列をJavaScriptオブジェクトとして解析するために使用されます.解析を操作するための方法もパラメータとして受信します.プログレッシブ方法の2番目のパラメータと同様に、この解析方法は、2つのパラメータを受信し、1つは属性値であり、1つは方法内で各項目を動作させ、戻り値に応じて解析の結果を変更することができる.
JSONの文法は三つのタイプの値を表してもいいです.単純な値:JavaScriptと同じ文字列、数値、ブール値、nullを表しますが、特殊な値undefinedはサポートされていません.オブジェクト:キーパッドのペアは必要ありません.配列:順序値のリスト.JSONは変数、関数またはオブジェクトの例をサポートしていません.構造データを表す形式だけです.
20.1シンプル値
JSONは文字列をダブルクォーテーションする必要があります.シングルクォーテーションマークは文法エラーを引き起こします.他の単純な値はJavaScriptと同じです.
20.1.2オブジェクトと配列
JSONのオブジェクトの属性名にはダブルクォーテーションを付けます.JSONオブジェクトには変数が宣言されておらず、末尾の区切りがなく、同じオブジェクトに同名の属性が2つ現れません.JSON配列の文法はJavaScriptと同じですが、同じ変数とセミコロンもありません.
20.2解析と序列化
20.21プログレッシブ
JSONオブジェクトのstrigify()メソッドは、JavaScriptオブジェクトをJSON文字列に順序付けするために使用されます.デフォルトでは、出力されたJSON文字列にはスペース記号やインデントは含まれていません.すべての関数とプロトタイプは意図的に無視されます.値はundefinedの任意の属性もスキップされます.
var obj = {
x:"a",
y:"b",
z:{
z1:[1,2,3],
z2:"z2"
},
u:undefined,
f:function () {
return this.x;
}
};
console.log(JSON.stringify(obj)); // {"x":"a","y":"b","z":{"z1":[1,2,3],"z2":"z2"}}
JSON.strigify()法の第二のパラメータは、配列の場合、配列内の属性のみを含む配列または方法であってもよい.console.log(JSON.stringify(obj,["x","y"])); // {"x":"a","y":"b"}
二つ目のパラメータが方法の場合、二つのパラメータを受け取ります.一つは属性名で、一つは属性値です.方法で属性を操作できます.関数の戻り値によって、順序付けの結果が変わります.リターン値がundefinedの項目は無視されます.console.log(JSON.stringify(obj,function (key, value) {
console.log(value);
return value;
}));
JSON.strigify()法の3番目のパラメータはインデントと空白を制御するためのものであり、このパラメータが数値であれば、各レベルのインデントの空欄数を表します.インデント値は最大10です.console.log(JSON.stringify(obj,null,4));
/*
{
"x": "a",
"y": "b",
"z": {
"z1": [
1,
2,
3
],
"z2": "z2"
}
}
*/
インデントパラメータが文字列の場合、この文字列をインデントとします.console.log(JSON.stringify(obj,null,"----"));
/*
{
----"x": "a",
----"y": "b",
----"z": {
--------"z1": [
------------1,
------------2,
------------3
--------],
--------"z2": "z2"
----}
}
*/
オブジェクトにtoJSON()法がある場合は、プログレッシブ時にtoJSON()法を実行して、プログレッシブ結果を返します.var obj = {
x:"a",
y:"b",
z:{
z1:[1,2,3],
z2:"z2"
},
u:undefined,
f:function () {
return this.x;
},
toJSON:function () {
return 0;
}
};
console.log(JSON.stringify(obj)); // 0
20.22解析JSON.parse()メソッドは、JSON文字列をJavaScriptオブジェクトとして解析するために使用されます.解析を操作するための方法もパラメータとして受信します.プログレッシブ方法の2番目のパラメータと同様に、この解析方法は、2つのパラメータを受信し、1つは属性値であり、1つは方法内で各項目を動作させ、戻り値に応じて解析の結果を変更することができる.
var obj = {
x:"a",
y:"b",
z:{
z1:[1,2,3],
z2:"z2"
},
u:undefined,
f:function () {
return this.x;
}
};
var jsonObj = JSON.stringify(obj);
console.log(JSON.parse(jsonObj,function (key, value) {
if(key==="x"){
value +=1;
}
return value;
})); // {x: "a1", y: "b", z: {…}}