JSON.stringify

概要

JSON.stringify() メソッドは値を JSON に変換し、また任意で置き換え関数が指定されている場合は値を置き換えたり、任意で配列が指定されている場合は指定されたプロパティのみを含むようにしたりします。

JSON のメソッド
実装されたバージョン JavaScript 1.7
ECMAScript エディション ECMAScript 5th Edition

構文

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

引数

value
JSON 文字列に変換する値。
replacer
もし関数である場合、文字列化の間に出会った値とプロパティを変換します。もし配列である場合は、最終的な文字列のオブジェクトに含まれるプロパティの集合を指定します。
replacer 関数の詳細な説明はネイティブ JSON を使うの記事にあります。
space
結果の文字列を整形して出力します。

説明

JSON.stringify はオブジェクトをそれを表す JSON 表記に変換します:

  • 配列でないオブジェクトのプロパティは、特定の順序で文字列化されることを保証されてはいません。文字列化において同じオブジェクトのプロパティの順序付けを信用しないでください。
  • Boolean、Number と String オブジェクトは文字列化の際に対応するプリミティブな値に変換され、慣習的な変換セマンティクスと一致します。
  • もし変換の際に undefined、関数、または XML 値に出会った場合、それは省略される(オブジェクトで見つかった時)か null に変更される(配列で見つかった時)ことになります。
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}' or '{"y":6,"x":5}'

space 引数

space 引数は最終的な文字列でのスペーシングを調整するために用いることができます。もし数値であれば、文字列化での連続するレベルはそれぞれその量(10 まで)の空白文字でインデントされます。もし文字列であれば、連続するレベルはこの文字列(またはその最初の 10 文字)でインデントされます。

JSON.stringify({ a: 2 }, null, " ");   // '{\n "a": 2\n}'

タブ文字を使って標準的な整形の見た目を真似します:

JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
// 返る文字列:
// '{            \
//     "uno": 1, \
//     "dos": 2  \
// }' 

toJSON の挙動

もし文字列化されるオブジェクトが toJSON という名前で値が関数のプロパティを持っていた場合、toJSON メソッドは JSON 文字列化の挙動をカスタマイズします: そのシリアライズされるオブジェクトの代わりに、toJSON メソッドが返した値がシリアライズされます。例えば:

var obj = {
  foo: 'foo',
  toJSON: function () {
    return 'bar';
  }
};
var json = JSON.stringify({x: obj}); // '{"x":"bar"}'

仕様

仕様書 策定状況 コメント
ECMAScript Language Specification 5.1th Edition (ECMA-262) Standard 最初期の定義。
JavaScript 1.7 で実装されました。
ECMAScript Language Specification 6th Edition (ECMA-262) ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) 3.5 (1.9.1) 8.0 10.5 4.0
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) 1.0 (1.0) (有) (有) (有)

Kangax's compat table に基づく。

関連情報

Document Tags and Contributors

タグ:
Contributors to this page: twe
最終更新者: twe,