TSOM スキーマバリデータを使用した JSON ペイロードの検証

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:3分
  • データをインポートする前に、TsomSchemaValidator ユーティリティクラスを使用して、TSOM スキーマに対して JSON ペイロードを検証します。これにより、エラーを早期に特定し、ETL の障害を減らし、データ品質を確認できます。

    このバリデーターを使用して、インポートセットを作成する前に、JSON ペイロードが電話会社オブジェクト (デバイス、論理接続、トポロジなど) に期待されるスキーマに準拠しているかどうかを確認します。この事前検証ステップは、スキーマ不一致エラーの防止とデバッグの改善に役立ちます。

    サポートされているスキーマタイプ

    バリデーターは、さまざまな電話会社のデータ構造に対して複数のスキーマタイプをサポートしています。
    • 論理コンポジット - コンポーネントのグループを表します:機器、PDU、ファンシェルフ
    • デバイス:機器およびそれに含まれるコンポーネント
    • 論理接続 - ネットワークインターフェイス間の接続
    • ポート関係 - ネットワークインターフェイス間の関係 (物理、論理、遅延)
    • 論理接続関係:論理接続間の関係
    • トポロジ - ネットワークトポロジ

    クラス構造

    let TsomSchemaValidator = Class.create();
    TsomSchemaValidator.prototype = {
    initialize: function() {
    this.schemas = new TsomGenericSchema();
    },
    isValidJson: function(payload) {
    // Validation logic that determines if the JSON structure is valid
    // Returns boolean (true/false)
    },
    checkJsonValidation: function(payload) {
    // Validation logic that determines if the JSON structure is valid
    // Returns a JSON object containing errors (if exist)
    },
    type: 'TsomSchemaValidator'
    };

    ステップ

    1. スキーマ検証ツールのインスタンス化javascriptCopyEdit
      var TsomSchemaValidator = new sn_tsom_core.TsomSchemaValidator();
      
    2. ブール検証チェックを実行
      if (!TsomSchemaValidator.isValidJson(target_json)) {
          gs.error('Invalid JSON: ' + JSON.stringify(target_json));
          return;
      }
      
    3. 詳細な検証チェックを実行
      let result = TsomSchemaValidator.checkJsonValidation(target_json);
      if (!result.valid) {
          gs.error('Invalid JSON: ' + JSON.stringify(result, null, 2));
          return;
      }
      

    出力例

    Example Output
    {
      "schemaName": "devices",
      "errors": [
        {
          "message": "Missing required property: model_name",
          "params": { "key": "model_name" },
          "code": 302,
          "dataPath": "/devices/0/ports/0",
          "schemaPath": "/properties/devices/items/properties/ports/items/required/4"
        }
      ],
      "valid": false
    }