我正在尝试检测 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: