JSON.stringify()【JavaScript 値 → JSON テキスト】メソッド

メモ

  • JavaScript 値 から JSON テキスト変換

構文

  • JSON.stringify ( value [ , replacer [ , space ] ] )

  • value:JavaScript 値
    toJSON メソッドを持っている場合、呼び出し (例:Date.toJSON【JSON テキスト シリアル化】)
  • replacer:変換関数 または 配列 (その他:無視)
    • 変換関数:2個の引数を持ち、戻り値は変換後の値
      引数名 (例)説明
      keyキー
      value
      戻り値が JSON テキストではない (undefined 等)の場合、下記の結果
      対象説明
      配列"null" (実装依存)
      オブジェクト除外
      その他undefined
    • 配列:選択対象プロパティ名(文字列・数値)配列 (ホワイトリスト)
  • space:スペーサー (文字列 または 数値)
    • 文字列:先頭10文字有効
    • 数値 (1~10):数値分のスペース

JSON テキスト

TypeError 例外:value が循環構造を含んでいる場合
var value = [];
value[0] = value;
JSON.stringify(value); // TypeError 例外

console.log(JSON.stringify(null));                  // 出力:null
console.log(JSON.stringify(false));                   // 出力:false
console.log(JSON.stringify(true));                    // 出力:true
console.log(JSON.stringify('string'));                // 出力:"string"
console.log(JSON.stringify(123));                     // 出力:123
console.log(JSON.stringify([ 1, 2, 3 ]));             // 出力:[1,2,3]
console.log(JSON.stringify({ x: 10, y: 20, z: 30 })); // 出力:{"x":10,"y":20,"z":30}
// 変換関数指定
function replacer(key, value) {
  if (value < 100) {
    return undefined; // 値が100未満の場合、undefined
}
  return value;       // 値が100以上の場合、変換なし
}
console.log(JSON.stringify(10, replacer));
// 出力:undefined
console.log(JSON.stringify(100, replacer));
// 出力:100
console.log(JSON.stringify([ 110, 90, 150 ], replacer));
// 出力:[110,null,150]
console.log(JSON.stringify({ x: 110, y: 90, z: 150 }, replacer));
// 出力:{"x":110,"z":150}
// 配列指定
console.log(JSON.stringify({ '4': 'four', '3': 'three', '2': 'two', '1': 'one' }, [ '1', '3' ]));
// 出力:{"1":"one","3":"three"}
console.log(JSON.stringify({ 4: 44, 3: 33 , 2: 22, 1: 11 }, [ 1, 3 ], 4));
// 出力:
// {
//     "1": 11,
//     "3": 33
// }
console.log(JSON.stringify({ '4': 'four', '3': 'three', '2': 'two', '1': 'one' }, [ '3', 1 ], '\t\t'));
// 出力:
// {
// (Tab)(Tab)"3": "three",
// (Tab)(Tab)"1": "one"
// }
// 内部で Date.prototype.toJSON() 呼び出し
var date = new Date(2001, (2-1), 3, 9); // 日本時間 9:00
console.log(JSON.stringify(date));      // 出力:"2001-02-03T00:00:00.000Z"

関連