2

我正在尝试检测 JsonSchema 是否包含有效架构。据我所知,Json.NET 没有验证 JSON 模式的方法。

似乎您可以使用完全无效的模式创建 JsonSchema 并且它不会抱怨,如下所示:

var invalidSchema = JsonSchema.Parse(@"{ ""title"": { ""Invalid"": ""Invalid"" } }");

然后,您可以继续针对无效模式验证 JObjects,您将得到真正的回报。作为记录,根据已发布的draft-03自描述模式(我使用JSON Schema Lint检查) ,上述“模式”无效。

我试图解析draft-03以针对它验证其他模式,但我并没有走得太远。当我尝试解析它时出现异常:

Newtonsoft.Json.JsonReaderException was unhandled by user code
  HResult=-2146233088
  Message=Exception JSON schema type string token, got StartObject. Path 'properties.type.items.type[1]', line 11, position 6.
  Source=Newtonsoft.Json
  LineNumber=11
  LinePosition=6
  Path=properties.type.items.type[1]
  StackTrace:
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.ProcessType()
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.ProcessSchemaProperty(String propertyName)
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.BuildSchema()
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.ProcessItems()
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.ProcessSchemaProperty(String propertyName)
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.BuildSchema()
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.ProcessProperties()
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.ProcessSchemaProperty(String propertyName)
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.BuildSchema()
       at Newtonsoft.Json.Schema.JsonSchemaBuilder.Parse(JsonReader reader)
       at Newtonsoft.Json.Schema.JsonSchema.Read(JsonReader reader, JsonSchemaResolver resolver)
       at Newtonsoft.Json.Schema.JsonSchema.Parse(String json, JsonSchemaResolver resolver)
       at Newtonsoft.Json.Schema.JsonSchema.Parse(String json)
  InnerException: 
4

0 回答 0