我正在尝试检测JsonSchema是否包含有效架构。据我所知,Json.NET没有验证JSON模式的方法。
您似乎可以使用完全无效的架构创建一个JsonSchema,它不会抱怨,如下所示:
var invalidSchema = JsonSchema.Parse(@"{ ""title"": { ""Invalid"": ""Invalid"" } }");
然后,您可以继续针对无效架构验证JObject,您将得到回复。根据已发布的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: