當前位置: 妍妍網 > 碼農

使用.NET 生成 JSON Schema 驗證器

2024-06-01碼農

在現代軟體開發中,JSON(JavaScript Object Notation)已成為數據交換的通用格式。為了確保接收到的 JSON 數據符合預期格式,我們可以使用 JSON Schema 進行驗證。在.NET 環境中,我們可以利用一些庫來生成和使用 JSON Schema 驗證器。

本文將介紹如何使用.NET 程式碼生成 JSON Schema 驗證器,並提供一個簡單的範例來演示驗證過程。

一、安裝必要的 NuGet 包

在.NET 計畫中,我們可以使用 NJsonSchema 這個 NuGet 包來生成和處理 JSON Schema。你可以透過 NuGet 包管理器或命令列工具來安裝它:

Install-Package NJsonSchema

或者使用 .NET CLI:

dotnet add package NJsonSchema

二、生成 JSON Schema

首先,我們需要定義一個.NET 類,該類將作為我們生成 JSON Schema 的基礎。例如,我們定義一個簡單的 Person 類:

public classPerson
{
publicstring FirstName { getset; }
publicstring LastName { getset; }
publicint Age { getset; }
}

接下來,我們可以使用 NJsonSchema 庫來為這個類生成 JSON Schema:

using NJsonSchema;
using NJsonSchema.Generation;
using System;
classProgram
{
staticvoidMain(string[] args)
{
var generator = new JsonSchemaGeneratorSettings();
var schema = JsonSchema.FromType<Person>(generator);
// 將生成的 JSON Schema 轉換為字串以便檢視或保存
var schemaJson = schema.ToJson(SchemaType.JsonSchemaDraft7);
Console.WriteLine(schemaJson);
}
}

這段程式碼會輸出一個描述 Person 類的 JSON Schema。

三、使用 JSON Schema 進行驗證

一旦我們有了 JSON Schema,我們就可以使用它來驗證 JSON 數據是否符合預期格式。以下是一個簡單的驗證範例:

using NJsonSchema;
using NJsonSchema.Validation;
using System;
using System.Text;
using Newtonsoft.Json.Linq;
classProgram
{
staticvoidMain(string[] args)
{
// 載入之前生成的 JSON Schema(或從其他地方獲取)
var schemaJson = "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"FirstName\":{\"type\":\"string\"},\"LastName\":{\"type\":\"string\"},\"Age\":{\"type\":\"integer\"}},\"required\":[\"FirstName\",\"LastName\",\"Age\"]}";
var schema = JsonSchema.FromJson(schemaJson);
// 要驗證的 JSON 數據
var json = "{\"FirstName\":\"John\",\"LastName\":\"Doe\",\"Age\":30}";
var jsonData = JToken.Parse(json);
// 進行驗證
var validator = new JsonSchemaValidator();
var validationErrors = validator.Validate(schema, jsonData);
// 輸出驗證結果
if (validationErrors.Count == 0)
{
Console.WriteLine("JSON 數據驗證透過!");
}
else
{
Console.WriteLine("JSON 數據驗證失敗!");
foreach (var error in validationErrors)
{
Console.WriteLine($"錯誤: {error.Path} - {error.Message}");
}
}
}
}


在這個範例中,我們首先載入了之前生成的 JSON Schema(在實際套用中,你可能需要從檔、資料庫或其他儲存中載入它)。然後,我們定義了一個要驗證的 JSON 字串,並使用 NJsonSchema 的驗證器對其進行驗證。最後,我們輸出了驗證結果。

透過這兩個簡單的範例,你可以看到在.NET 中使用 NJsonSchema 庫生成和使用 JSON Schema 驗證器是多麽容易。這對於確保你的應用程式接收到的 JSON 數據符合預期格式非常有用。