bugfix> c# > 投稿

契約テストの一環として、rest-endpointから取得したjson応答をファイルに存在するjson-schemaに対して検証する必要があります。 NJsonSchemaを使用していますが、これを実行できませんでした。

ファイル内のJSONスキーマは以下のようになります

{
        'type': 'object',
        'properties': {
            'remaining': {
                'type': 'integer',
                'required': true
            },
            'shuffled': {
                'type': 'boolean',
                'required': true
            }
            'success': {
                'type': 'boolean',
                'required': true
            },
            'deck_id': {
                'type': 'string',
                'required': true
            }
        }
    }

私が検証しなければならないJsonは以下のようなものです

{ 'remaining': 52, 'shuffled': true, 'success': true, 'deck_id': 'b5wr0nr5rvk4'}

誰でも、NJsonSchemaまたはManatee.Jsonを使用してjsonschemaでjsonを検証する方法について(例を挙げながら)いくつかの光を投げてください。

回答 1 件
  • Disclaimer: I'm the author of Manatee.Json.

    それはドラフト-03 スキーマ( required  キーワードがプロパティ宣言から移動されましたドラフト-04)。 NJsonSchemaがその古いスキーマをサポートしているかどうかはわかりません。 Manatee.Jsonはしません。

    JSONスキーマは現在ドラフト-07、そしてドラフト08 もうすぐです。

    私の提案は、 required を移動してスキーマを後のドラフトとして書き直すことです。  キーワードを properties の兄弟としてルートに追加 。 required の値  必要なプロパティのリストを含む文字列の配列になります。

    {
      "type": "object",
      "properties": {
        "remaining": { "type": "integer" },
        "shuffled": { "type": "boolean" },
        "success": { "type": "boolean" },
        "deck_id": { "type": "string" }
      },
      "required": [ "remaining", "shuffled", "success", "deck_id" ]
    }
    
    

    これを行うことで、Manatee.Jsonと一緒に動作します。期待する NJsonSchemaでも動作します。

    Manatee.Jsonの使用に関して具体的な質問がある場合は、Slackワークスペースをご覧ください。 GHのreadmeにリンクがあります。

あなたの答え