はじめに
この実験では、JavaScript を使って循環参照を含む JSON オブジェクトをシリアライズする方法を検討します。カスタムの置換関数と WeakSet を使って循環参照を検出し、省略します。この実験が終了するとき、JavaScript で循環データ構造を処理する方法と、それを JSON 形式にシリアライズする方法をより深く理解するようになります。
これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 100%です。学習者から 100% の好評価を得ています。
循環参照を持つ JSON を文字列化する方法
循環参照を含む JSON オブジェクトを文字列化するには、次の手順に従います。
- ターミナル/SSH を開き、コーディングを練習するために
nodeを入力します。 WeakSet.prototype.add()とWeakSet.prototype.has()を使って、既に見た値を格納して確認するためのWeakSetを作成します。seenに既に存在する値を省略し、必要に応じて新しい値を追加するカスタムの置換関数を使ってJSON.stringify()を使用します。- ⚠️ 注意: この関数は循環参照を見つけて削除しますが、これによりシリアライズされた JSON で循環データが失われます。
stringifyCircularJSON 関数のコードは次のとおりです。
const stringifyCircularJSON = (obj) => {
const seen = new WeakSet();
return JSON.stringify(obj, (key, value) => {
if (value !== null && typeof value === "object") {
if (seen.has(value)) return;
seen.add(value);
}
return value;
});
};
この関数をテストするには、循環参照を持つオブジェクトを作成して stringifyCircularJSON を呼び出すことができます。
const obj = { n: 42 };
obj.obj = obj;
stringifyCircularJSON(obj); // '{"n": 42}'
まとめ
おめでとうございます!循環参照を持つ JSON を文字列化する実験を完了しました。技術力を向上させるために、LabEx でさらに実験を行って練習してください。