2017-09-26 3 views
0

Ich arbeite an der Erkundung einiger Json-Validierungsmuster und stieß auf etwas unerwartetes in Json.Net Schema (v3.0.3).Sollte Json.Net Schema-Validierung doppelte Eigenschaften erkennen

Kurz gesagt, wenn ich mein Schema von einem .net-Typ generieren, dann geben Sie einen Datenstring ein, der eine der Eigenschaften zweimal enthält, würde ich erwarten, dass der Validator eine Ausnahme auslöst. Es akzeptiert jedoch die mehreren Werte in einer Last-in-Wins-Weise. Gibt es eine Möglichkeit, die Daten mit mehreren Werten abzulehnen?

Beispiel, das ist meine Art ist:

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

Dann ist dies der Code des Tests, den ich zusammen diese Art verwenden setze (beachten Sie, dass die Daten den Namen Eigenschaft zweimal enthalten):

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."); 
} 

Hinweis: Dieses Verwendungsmuster besteht alle anderen Testfälle, mit denen wir uns befassen.

Antwort

0

JSON-Schema hat keine Validierung zum Erkennen doppelter Eigenschaften in einem JSON-Objekt.

In der JSON-Spezifikation werden doppelte Eigenschaften nicht erwähnt, daher sind sie gültig, aber nicht empfohlen.

Verwandte Themen