Я попытался проверить эту схему с помощью NjsonSchema, но получил ошибку типа: «Не удалось разрешить путь JSON '/defs/product», поскольку путь к документу недоступен».
это мой файл основной схемы-json:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Image",
"type": "object",
"required": [
"identifier",
"altText",
"products",
],
"properties": {
"identifier": {
"type": "string",
"title": "Image identifier"
},
"altText": {
"type": "string",
"title": "image alt text"
},
"products": {
"type": "array",
"title": "list of products with markers",
"items": {
"$ref": "/defs/product"
}
}
}
}
это мой общий json-файл:
{
"$id": "https://inter-ikea.atlassian.net/defs/product",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Product",
"type": "object",
"required": [
"dot",
],
"properties": {
"dot": {
"title": "Dot coordinates and product",
"type": "object",
"required": [
"top",
"left"
],
"top": {
"type": "number",
"description": "0-1 distance from top"
},
"left": {
"type": "number",
"description": "0-1 distance from left"
}
}
}
это мой код:
using JsonSchema = NJsonSchema.JsonSchema;
string mainSchemaJson = File.ReadAllText("../../.././ImageSchema.json");
var schema = await JsonSchema.FromJsonAsync(mainSchemaJson);
Не используйте FromJsonAsync, используйте FromFileAsync
код:
var schema = await JsonSchema.FromFileAsync("../../.././ImageSchema.json");
string json = @"
{
""personInfo"": {
""name"": ""John"",
""age"": 30
},
""contactInfo"": {
""email"": ""[email protected]"",
""address"": ""123 Street""
}
}";
var validationErrors = schema.Validate(json); // Validate
if (validationErrors.Count == 0)
{
Console.WriteLine("Validation successful.");
}
else
{
Console.WriteLine("Validation errors:");
foreach (var error in validationErrors)
{
Console.WriteLine($"- {error}");
}
}
mainschema.json:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Image",
"type": "object",
"required": [
"identifier",
"altText",
"products",
],
"properties": {
"identifier": {
"type": "string",
"title": "Image identifier"
},
"altText": {
"type": "string",
"title": "image alt text"
},
"products": {
"type": "array",
"title": "list of products with markers",
"items": {
"$ref": "./products.json"
}
}
}
}
Благодарим вас за вклад в сообщество Stack Overflow. Возможно, это правильный ответ, но было бы очень полезно предоставить дополнительные пояснения к вашему коду, чтобы разработчики могли понять ваши рассуждения. Это особенно полезно для новых разработчиков, которые не так хорошо знакомы с синтаксисом или пытаются понять концепции. Не могли бы вы отредактировать свой ответ, включив в него дополнительную информацию на благо сообщества?
@JeremyFiel Я уже поместил этот файл в тот же каталог
В основной схеме не определен $id
(базовый uri), что делает ее анонимной схемой. Это создает проблему, с которой вы столкнулись: не определен базовый uri для разрешения относительной ссылки.
вы можете прочитать больше об этом здесь: https://json-schema.org/understanding-json-schema/structuring#dollarref
этот вариант может работать, если файлы
mainschema
иproducts
находятся в одном каталоге, поскольку относительная ссылка./
может быть разрешена.