2023-05-15
Node.js に JSON というオブジェクトがあります。
実体がどこにあるのか気になりNode.jsの実装を見てみました。
Node.js のドキュメントを見てみる
こちらです
私はてっきりJSONもコアモジュールだと思ってました。fs や process と同じく。。
が、ドキュメントにはそういう記述がありません。
Node.js の実装を見てみる
nodejs/node を見てみます。特徴的な名前の JSON.stringify() で探してみます。
deps/v8 配下に、それらしきものを見つけました。
// deps/v8/src/builtins/builtins-json.cc BUILTIN(JsonParse) { HandleScope scope(isolate); Handle<Object> source = args.atOrUndefined(isolate, 1); ... } BUILTIN(JsonStringify) { HandleScope scope(isolate); Handle<Object> object = args.atOrUndefined(isolate, 1); Handle<Object> replacer = args.atOrUndefined(isolate, 2); ... }
ファイルパスは deps/v8/src/builtins/builtins-json.cc です。 パスを見るに JSON.stringify() の実処理は V8 にありそうです。
(ちなみに deps/v8 配下 は V8 のソースコードのようです。実際 V8 のミラーリポジトリに同じようなコードがありました。フォークしているのでしょうか。参考)
V8 のドキュメントを見てみる
v8::JSON というクラスを見つけました。リファレンスは こちら です。
Parse や Stringify というメンバ関数があります。 Node.js が JSON.stringify() を独自実装しているのかと思っていたんですが、V8由来だったんですね。
Links
作成日
2023-05-15
更新日
2023-05-15