0
我正在研究一些json驗證模式,並在Json.Net架構(v3.0.3)中遇到意想不到的情況。Json.Net架構驗證是否檢測到重複屬性
簡而言之,如果我從.net類型生成我的模式,然後提供包含兩個屬性之一的數據字符串,我希望驗證器引發異常。不過,它以最後一種方式接受多個值。有沒有辦法讓它拒絕具有多個值的數據?
例如,這是我喜歡的類型:
class TestObject {
[Required]
public int? Id { get; set; }
public string Name { get; set; }
public bool? Flag { get; set; }
}
那麼這是考驗我放在一起使用該類型的代碼(注意,該數據包含名稱屬性兩次):
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.");
}
注意:該使用模式通過了我們所關心的所有其他測試用例。