C# 是否可以使用JSChemaValidationReader优化json.net模式,以便在流的相同读取中反序列化对象?

C# 是否可以使用JSChemaValidationReader优化json.net模式,以便在流的相同读取中反序列化对象?,c#,json.net,schema,jsonschema,C#,Json.net,Schema,Jsonschema,我在试一个poc。 是否可以使用JSChemaValidationReader优化json.net模式,以便在流的相同读取中反序列化对象 在另一个世界 string schemaJson = @"{ 'description': 'A person', 'type': 'object', 'properties': { 'name': {'type': 'string'}, 'hobbies': { 'typ

我在试一个poc。 是否可以使用JSChemaValidationReader优化json.net模式,以便在流的相同读取中反序列化对象

在另一个世界

string schemaJson = @"{
      'description': 'A person',
      'type': 'object',
      'properties': {
        'name': {'type': 'string'},
        'hobbies': {
          'type': 'array',
          'items': {'type': 'string'}
        }
      }
    }";

JSchema schema = JSchema.Parse(schemaJson);

using (StreamReader s = File.OpenText(@"c:\bigdata.json"))
using (JSchemaValidatingReader reader = new JSchemaValidatingReader(new JsonTextReader(s)))
{
    reader.Schema = schema;
    reader.ValidationEventHandler += (sender, args) => { Console.WriteLine(args.Message); };

    //Deserialize json while validating
    while (reader.Read())
    {
    }
}
谢谢

是,是的子类,因此您可以通过将其传递给以下对象来使用它进行反序列化:

使用(var s=File.OpenText(@“c:\bigdata.json”))
使用(var baseReader=newjsontextreader)
使用(var reader=new-jschemavalidationreader(baseReader))
{
reader.Schema=Schema;
reader.ValidationEventHandler+=(发送方,args)=>{Console.WriteLine(args.Message);};
root=JsonSerializer.CreateDefault()。反序列化(读卡器);
}
演示小提琴

相关文档:。

是的,是的子类,因此您可以通过将其传递给以下对象来使用它进行反序列化:

使用(var s=File.OpenText(@“c:\bigdata.json”))
使用(var baseReader=newjsontextreader)
使用(var reader=new-jschemavalidationreader(baseReader))
{
reader.Schema=Schema;
reader.ValidationEventHandler+=(发送方,args)=>{Console.WriteLine(args.Message);};
root=JsonSerializer.CreateDefault()。反序列化(读卡器);
}
演示小提琴

相关文件:

using (var s = File.OpenText(@"c:\bigdata.json"))
using (var baseReader = new JsonTextReader(s))
using (var reader = new JSchemaValidatingReader(baseReader))
{
    reader.Schema = schema;
    reader.ValidationEventHandler += (sender, args) => { Console.WriteLine(args.Message); };

    root = JsonSerializer.CreateDefault().Deserialize<RootObject>(reader);
}