JSON利器のシーケンス化と逆シーケンス化


オリジナルJSONオブジェクトには2つの重要な方法が含まれている.JSON.parse()メソッドはJSON文字列を解析し、JavaScriptオブジェクトとして再構築するために使用され、JSON.stringify()メソッドはjavascriptオブジェクトを等価なJSON文字列に変換することができる.
方法:
JSON.parse(text[, reviver])
文字列解析をJSONとし,選択的に値をJSONに変換する.
パラメータ:-text、jsに解析される文字列-reviverは、関数の場合、元の値がどのように解析改造され、返される前に定義されます.
戻り値:-Objectは、指定されたJSONテキストに対応します.
JSONを使用します.parse() - JSON.parse(‘{}’);//{} - JSON.parse(‘true’);//true - JSON.parse(‘“foo”’);//“foo” - JSON.parse(‘[1, 5, “false”]’);//[1, 5, “false”] - JSON.parse(‘null’);//null
JSON.parse()はカンマで終わることは許されません
JSON.stringify(value[, replacer [, space]])
JSON.stringify()メソッドはJavaScript値をJSON文字列に変換し、replacer関数が指定されている場合は値を置き換えるか、replacer配列が指定されている場合は、オプションとして指定した属性のみを含む.
パラメータ:-value、JSON文字列の値にシーケンス化します.-replacer(オプション)-パラメータが関数の場合、シーケンス化中にシーケンス化された値の各属性が関数の変換と処理を経ます.-パラメータが配列である場合、この配列に含まれる属性名のみが最終的なJSON文字列にシーケンス化されます.-パラメータがnullまたは指定されていない場合、オブジェクトのすべてのプロパティがシーケンス化されます.-space(オプション)は、出力を美化するためにインデント用の空白文字列を指定します.-パラメータが数値の場合、スペースがどれだけあるかを表します.上限は10です.変更値が1より小さい場合は、スペースがないことを意味します.-パラメータが文字列(文字列の最初の10文字)の場合、文字列はスペースとして使用されます.-パラメータが指定されていない(またはnull)場合は、スペースはありません.
戻り値:-指定された値を表すJSON文字列.
説明
シーケンス化については、次の5つの注意点があります.-配列以外のオブジェクトのプロパティは、シーケンス化後の文字列に特定の順序で表示されることを保証できません.-ブール値、数値、文字列のパッケージオブジェクトは、シーケンス化中に自動的に対応する元の値に変換されます.-undefined、任意の関数、symbol値は、シーケンス化中に無視されるか(非配列オブジェクトの属性値に現れる場合)、null(配列に現れる場合)に変換されます.-symbolをプロパティ・キーとするすべてのプロパティは、replacerパラメータに強制的に指定されている場合でも完全に無視されます.-列挙できない属性は無視されます
JSON.stringify({});                        // '{}'
JSON.stringify(true);                      // 'true'
JSON.stringify("foo");                     // '"foo"'
JSON.stringify([1, "false", false]);       // '[1,"false",false]'
JSON.stringify({ x: 5 });                  // '{"x":5}'

JSON.stringify({x: 5, y: 6});              
// "{"x":5,"y":6}"

JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); 
// '[1,"false",false]'

JSON.stringify({x: undefined, y: Object, z: Symbol("")}); 
// '{}'

JSON.stringify([undefined, Object, Symbol("")]);          
// '[null,null,null]' 

JSON.stringify({[Symbol("foo")]: "foo"});                 
// '{}'

JSON.stringify({[Symbol.for("foo")]: "foo"}, [Symbol.for("foo")]);
// '{}'

JSON.stringify(
    {[Symbol.for("foo")]: "foo"}, 
    function (k, v) {
        if (typeof k === "symbol"){
            return "a symbol";
        }
    }
);


// undefined 

//              :
JSON.stringify( 
    Object.create(
        null, 
        { 
            x: { value: 'x', enumerable: false }, 
            y: { value: 'y', enumerable: true } 
        }
    )
);

// "{"y":"y"}"