Проверка Схемы Json в .NET
Часто бывает полезно проверять документы JSON на соответствие схеме. Схема JSON — это словарь, который можно использовать для аннотирования и проверки документов JSON. Например, вы можете проверить документ JSON, полученный от REST API, или файл конфигурации, написанный пользователем. Сегодня посмотрим, как проверить данные JSON на соответствие схеме в .NET.
Совет. В PowerShell, вы можете использовать командлет Test-Json для проверки данных JSON на соответствие схеме JSON.
.NET не поддерживает проверку схемы JSON «из коробки». Однако существует несколько сторонних библиотек, которые можно использовать для проверки данных JSON на соответствие схеме. Здесь мы используем библиотеку JsonSchema.Net https://www.nuget.org/packages/JsonSchema.Net.
Создадим проект:
dotnet new console
dotnet add package JsonSchema.Net
Следующий код показывает, как проверить данные JSON на соответствие схеме:
using System.Text.Json.Nodes;
using Json.Schema;
//пример схемы
var schema = """
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/product.schema.json",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"productName": {
"description": "Name of the product",
"type": "string"
},
"price": {
"description": "The price of the product",
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [ "productName", "price" ]
}
""";
// полученные данные
var json = """
{
"productName": "test",
"price": -1
}
""";
// Проверка
var jsonSchema = JsonSchema.FromText(schema);
var result = jsonSchema
.Evaluate(JsonNode.Parse(json));
if (!result.IsValid)
{
Console.WriteLine("Invalid document");
if (result.HasErrors)
{
foreach (var error in result.Errors)
Console.WriteLine(error.Key + ": " + error.Value);
}
}
Источник: https://www.meziantou.net/json-schema-validation-in-dotnet.htm