2016-09-23 4 views
1

Ich habe folgende JSON & Klasse,Newtonsoft JSON Schema Ignorieren Validierungen für Deserialize

{ "Id": 123, "Vorname": "fName", "Name": "lName" }

public class Student 
{ 
    public int Id { get; set; } 

    [StringLength(4)] 
    public string FirstName { get; set; } 

    [StringLength(4)] 
    public string LastName { get; set; } 
} 

ich versuche, über JSON deserialisieren eine Instanz Student Klasse zu erstellen.

var body = //above json as string; 

Student model = null; 

JSchemaGenerator generator = new JSchemaGenerator(); 
JSchema schema = generator.Generate(typeof(Student)); 

using (JsonTextReader reader = new JsonTextReader(new StringReader(body))) 
{ 
    using (JSchemaValidatingReader validatingReader = new JSchemaValidatingReader(reader) { Schema = schema }) 
    { 
     JsonSerializer serializer = new JsonSerializer(); 
     model = serializer.Deserialize(validatingReader, typeof(Student)); 
    } 
} 

Diese eine Ausnahme für String-Länge Validierung wirft, ist es eine Möglichkeit, die JSON deserialisiert, indem alle Daten Anmerkung Validierungen zu ignorieren?

+2

Warum entfernen nicht nur die StringLength (4), wenn Sie es nicht wollen? – DaImTo

Antwort

3

Sie können Ihre Daten mit dem folgenden Code deserialisieren. Sie validieren vor dem Serialisieren, aufgrund dessen es Fehler wirft.

var body ="{\"Id\":123,\"FirstName\":\"fNamesdcsdc\",\"LastName\":\"lName\"}"; 
      using (JsonTextReader reader = new JsonTextReader(new StringReader(body))) 
      { 
       JsonSerializer serializer = new JsonSerializer(); 
       var model = serializer.Deserialize(reader, typeof(Student)); 
      } 

enter image description here

1

Ein anderer Ansatz

  String json="{ \"Id\": 123, \"FirstName\": \"fName\", \"LastName\": \"lName\" }"; 

      JavaScriptSerializer serializer=new JavaScriptSerializer(); 
      Student student = serializer.Deserialize<Student>(json); 
Verwandte Themen