JavaScriptのJSON.stringifyの引数のオブジェクトにtoJSONメソッドを持つ場合の挙動

オブジェクトにtoJSONメソッドを持つ場合の挙動

JavaScriptの JSON.stringify() メソッドは、オブジェクトをJSON形式の文字列に変換する際に、そのオブジェクトが toJSON メソッドを持っている場合に特別な挙動を示します。

具体的には、JSON.stringify() は次のように動作します:

1. オブジェクトが toJSON メソッドを持っている場合、このメソッドが呼び出されます。
2. toJSON メソッドが存在する場合、そのメソッドが返す値が、実際にJSON文字列に変換される値として使われます。
3. toJSON メソッドが存在しない場合、オブジェクト自体が文字列化されます。

例えば、次のようなオブジェクトがあるとします:

const obj = {
  data: 'Some data',
  toJSON: function() {
    return this.data.toUpperCase();
  }
};

この場合、obj を JSON.stringify() で文字列化すると、toJSON メソッドが obj で呼び出され、その結果として "SOME DATA" という文字列が返されます。

const jsonString = JSON.stringify(obj);
console.log(jsonString); // 出力: "SOME DATA"

したがって、toJSON メソッドを持つことで、オブジェクトのJSON形式への変換をカスタマイズすることができます。