Newtonsoft JSON 架构忽略反序列化验证
Newtonsoft JSON Schema Ignore Validations For Deserialize
我关注 JSON & class,
{
"Id": 123,
"FirstName": "fName",
"LastName": "lName"
}
public class Student
{
public int Id { get; set; }
[StringLength(4)]
public string FirstName { get; set; }
[StringLength(4)]
public string LastName { get; set; }
}
我正在尝试反序列化上述 JSON 以创建学生 class 的实例。
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));
}
另一种方法
String json="{ \"Id\": 123, \"FirstName\": \"fName\", \"LastName\": \"lName\" }";
JavaScriptSerializer serializer=new JavaScriptSerializer();
Student student = serializer.Deserialize<Student>(json);
我关注 JSON & class,
{ "Id": 123, "FirstName": "fName", "LastName": "lName" }
public class Student
{
public int Id { get; set; }
[StringLength(4)]
public string FirstName { get; set; }
[StringLength(4)]
public string LastName { get; set; }
}
我正在尝试反序列化上述 JSON 以创建学生 class 的实例。
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));
}
另一种方法
String json="{ \"Id\": 123, \"FirstName\": \"fName\", \"LastName\": \"lName\" }";
JavaScriptSerializer serializer=new JavaScriptSerializer();
Student student = serializer.Deserialize<Student>(json);