JSON.stringify()とJSON.parse()

1027 ワード

これは2つのよく使われるJSON処理関数ですが、まだ詳細なパラメータがあり、あまり知られていません.まず火狐開発者の公式サイトの説明を抜粋してください.
JSON.stringify(value[, replacer[, space]])

2番目のパラメータはreplacerと呼ばれています.なぜvalueの値を置換してフィルタするのですか.次の例です.
function replacer(key, value)
 { 
    if (typeof value === "string")
    { return undefined; } 
    return value;
}
  var foo = {foundation: "Mozilla", model:  "box", week: 45, 
  transport:"car", month: 7};
  var jsonString = JSON.stringify(foo, replacer);

このプログラムは、文字列以外の部分をJSONに変換することができます.spaceはスペースを追加しています.説明しません.もう一つのオブジェクトのtoJSON関数は、より具体的な動作を定義することができます.
parseにも似たような行為があります.
JSON.parse(text[, reviver])

reviverはmapのようにキー値ペアごとに変更できます.
var obj=JSON.parse('{"1": 1, "2": 2, "3": 3}', function(k, v) 
    {if (k === '') { return v;}    
        return v*2;
    });

注意第一句,if(k=='){return v;}reviverは最後に空の文字列で呼び出されるため、vに直接戻ると、他の操作でさまざまな問題が発生します.