随机文档的架构验证通过了吗?
Schema validation passed for a random document?
我是 JSON 架构和 Json.NET 架构的新手。只是按照示例编写了一个执行模式验证的测试程序。我选择了一个随机模式和一个随机 JSON 文件,但最后的 IsValid() 调用 returns 为真。我错过了什么吗?谢谢。
static void SchemaTest3()
{
string schemaJson = @"{
'description': 'A person',
'type': 'object',
'properties': {
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
JSchema schema = JSchema.Parse(schemaJson);
IList<string> errorMessages;
JToken jToken = JToken.Parse(@"{
'@Id': 1,
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
],
'Team': {
'@Id': 2,
'Name': 'Software Developers',
'Description': 'Creators of fine software products and services.'
}
}");
bool isValid = jToken.IsValid(schema, out errorMessages);
Console.Write(isValid);
}
您选择的模式允许添加额外的属性,并且不创建任何字段 "required",任何有效的 json 将通过您的模式的原因。
如果您添加 "additionalProperties":false 这将使您的架构更加严格。
您可以使用 http://www.jsonschemavalidator.net/ 来尝试您的架构并探索其他选项。
我发现 http://json-schema.org/examples.html 从 json 架构开始时非常有用。
这是您的更严格的架构。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "A person",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"hobbies": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
我是 JSON 架构和 Json.NET 架构的新手。只是按照示例编写了一个执行模式验证的测试程序。我选择了一个随机模式和一个随机 JSON 文件,但最后的 IsValid() 调用 returns 为真。我错过了什么吗?谢谢。
static void SchemaTest3()
{
string schemaJson = @"{
'description': 'A person',
'type': 'object',
'properties': {
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
JSchema schema = JSchema.Parse(schemaJson);
IList<string> errorMessages;
JToken jToken = JToken.Parse(@"{
'@Id': 1,
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
],
'Team': {
'@Id': 2,
'Name': 'Software Developers',
'Description': 'Creators of fine software products and services.'
}
}");
bool isValid = jToken.IsValid(schema, out errorMessages);
Console.Write(isValid);
}
您选择的模式允许添加额外的属性,并且不创建任何字段 "required",任何有效的 json 将通过您的模式的原因。
如果您添加 "additionalProperties":false 这将使您的架构更加严格。
您可以使用 http://www.jsonschemavalidator.net/ 来尝试您的架构并探索其他选项。
我发现 http://json-schema.org/examples.html 从 json 架构开始时非常有用。
这是您的更严格的架构。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "A person",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"hobbies": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}