第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の任意の属性もスキップされます.
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: {…}}