2016-09-23 58 views
1

我具有以下JSON &类,Newtonsoft JSON模式忽略验证对于反序列化

{ “ID”:123, “姓”: “FNAME”, “名字”: “L-NAME” }

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

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

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

我想反序列化上面的JSON来创建一个学生类的实例。

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

这是抛出异常的字符串长度的验证,有没有办法忽略所有的数据注释验证反序列化JSON的?

+2

为什么不直接删除StringLength(4)如果你不想要吗? – DaImTo

回答

3

您可以使用下面的代码反序列化您的数据。在序列化之前,您正在验证它是由于抛出错误。

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

另一种方法

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

      JavaScriptSerializer serializer=new JavaScriptSerializer(); 
      Student student = serializer.Deserialize<Student>(json); 
相关问题