循環参照を持つ JSON を文字列化する

JavaScriptJavaScriptBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、JavaScript を使って循環参照を含む JSON オブジェクトをシリアライズする方法を検討します。カスタムの置換関数と WeakSet を使って循環参照を検出し、省略します。この実験が終了するとき、JavaScript で循環データ構造を処理する方法と、それを JSON 形式にシリアライズする方法をより深く理解するようになります。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 100%です。学習者から 100% の好評価を得ています。

循環参照を持つ JSON を文字列化する方法

循環参照を含む JSON オブジェクトを文字列化するには、次の手順に従います。

  1. ターミナル/SSH を開き、コーディングを練習するために node を入力します。
  2. WeakSet.prototype.add()WeakSet.prototype.has() を使って、既に見た値を格納して確認するための WeakSet を作成します。
  3. seen に既に存在する値を省略し、必要に応じて新しい値を追加するカスタムの置換関数を使って JSON.stringify() を使用します。
  4. ⚠️ 注意: この関数は循環参照を見つけて削除しますが、これによりシリアライズされた 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 でさらに実験を行って練習してください。