c# - Newtonsoft JSON 架构忽略反序列化验证

标签 c# asp.net asp.net-mvc jsonschema

我有以下 JSON 和类,

{ “身份证”:123, "名字": "fName", “姓氏”:“lName” }

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?

最佳答案

您可以使用以下代码反序列化您的数据。您在序列化之前进行验证,因此它会引发错误。

 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

关于c# - Newtonsoft JSON 架构忽略反序列化验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660684/

相关文章:

c# - 在 MVC 中将文本与图像居中

c# - 检查 winform 是否隐藏在以独占全屏模式运行的游戏后面

c# - C# double 格式的问题

javascript - 无法从静态方法运行 Javascript

c# - 如果设置了 MasterType,如何使用自动生成的 Master 属性修复命名空间问题

ASP.NET 成员资格提供程序 - 单点登录

c# - MVC Entity Framework DropDownListFor<>

c# - WPF 拖放 - 从 DragEventArgs 获取原始源信息

c# - 如何通过 NetTopologySuite 制作带有 xxx 米的缓冲区

asp.net - 使用 .net core Identity 和 JwtBearerAuthentication 授权策略属性总是返回 403 forbidden