2017-04-14 8 views
0

私はJSONスキーマとJson.NETスキーマが初めてです。スキーマの検証を行うテストプログラムを作成するだけのサンプルに続いていました。私はランダムなスキーマと無駄なJSONファイルを選択しましたが、最後のIsValid()コールはTrueを返します。何か不足していますか?ありがとう。あなたが選んだランダムなドキュメントに対してスキーマ検証が渡されましたか?

static void SchemaTest3() 
    { 
     string schemaJson = @"{ 
      'description': 'A person', 
      'type': 'object', 
      'properties': { 
      'name': {'type':'string'}, 
      'hobbies': { 
       'type': 'array', 
       'items': {'type':'string'} 
      } 
      } 
     }"; 
     JSchema schema = JSchema.Parse(schemaJson); 

     IList<string> errorMessages; 
     JToken jToken = JToken.Parse(@"{ 
          '@Id': 1, 
          'Email': '[email protected]', 
          'Active': true, 
          'CreatedDate': '2013-01-20T00:00:00Z', 
          'Roles': [ 
          'User', 
          'Admin' 
          ], 
          'Team': { 
          '@Id': 2, 
          'Name': 'Software Developers', 
          'Description': 'Creators of fine software products and services.' 
          } 
         }"); 
     bool isValid = jToken.IsValid(schema, out errorMessages); 
     Console.Write(isValid); 
    } 

答えて

1

スキーマには理由が任意の有効なJSON自分のスキーマに合格することを、追加のプロパティを追加することを可能にすると、「必要」の任意のフィールドを作成しません。

「additionalProperties」を追加した場合:falseこれにより、スキーマがより厳しくなります。

http://www.jsonschemavalidator.net/を使用すると、スキーマを再生したり、他のオプションを調べることができます。

私は、http://json-schema.org/examples.htmlがjsonスキーマで始まるときに非常に役に立ちました。

ここでは、あなたのスキーマがより厳格です。

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "description": "A person", 
    "type": "object", 
    "properties": { 
     "name": { 
      "type": "string" 
     }, 
     "hobbies": { 
      "type": "array", 
      "items": { 
       "type": "string" 
      } 
     } 
    }, 
    "additionalProperties": false 
} 
関連する問題