2017-09-26 28 views
0

Jsonの検証パターンを調べて、Json.Net Schema(v3.0.3)で予期せぬものに遭遇しました。Json.Netスキーマ検証で重複したプロパティが検出されるべきです

つまり、.net型からスキーマを生成し、そのプロパティの1つを含むデータ文字列を2回フィードすると、バリデータが例外をスローすることが予想されます。しかし、それは最後の勝利の方法で複数の値を受け入れます。複数の値を持つデータを拒否させる方法はありますか?

例は、これは私のタイプである:

class TestObject { 
    [Required] 
    public int? Id { get; set; } 
    public string Name { get; set; } 
    public bool? Flag { get; set; } 
} 

が、これは私がそのタイプを使用して一緒に入れ、テストのコードである(データは二回nameプロパティが含まれていることに注意してください):

var jsonString="{'Id': 111, 'Name': 'SomeValue', 'Flag': true, 'Name':'IgnoredValue'}"; 
var reader=new JSchemaValidatingReader(new JsonTextReader(new StringReader(jsonString))) { 
    Schema=new JSchemaGenerator() { DefaultRequired=Required.Default }.Generate(typeof(TestObject)) 
}; 

// Act 
try { 
    var result=JsonSerializer.Create().Deserialize<TestObject>(reader); 
    Assert.Fail("Exception expected."); 
} 

注:この使用パターンは、関係する他のすべてのテストケースを通過させます。

答えて

0

JSONスキーマには、JSONオブジェクト内の重複するプロパティを検出する検証がありません。

JSON仕様では、重複するプロパティについては言及していないため、これらは有効ですが推奨されていません。

関連する問題