You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Web API中不使用Newtonsoft.Json.Schema验证JSON Schema及报错解决

解决NJsonSchema验证JSON时的类型转换错误

你遇到的错误是因为沿用了Newtonsoft.Json.Schema的调用逻辑,但NJsonSchema有独立的API体系,不能直接用JObject调用Validate方法传递JToken参数。以下是正确的实现步骤:

步骤1:安装正确的NuGet包

确保安装适配Newtonsoft.Json的NJsonSchema包:

Install-Package NJsonSchema.NewtonsoftJson

步骤2:正确加载JSON Schema

不要用JObject.Parse加载Schema,改用NJsonSchema的专用方法:

// 从字符串加载Schema
var jsonSchema = JsonSchema.Parse(schemafile);

// 若从文件加载,可使用异步方法
// var jsonSchema = await JsonSchema.FromFileAsync("schema.json");

步骤3:执行JSON验证

使用NJsonSchema的JsonSchemaValidator类完成验证,示例代码:

JToken json = JToken.Parse(value); // 待验证的JSON值

var validator = new JsonSchemaValidator();
// 执行验证,返回错误列表
var validationErrors = validator.Validate(json, jsonSchema);

// 处理验证结果
if (validationErrors.Count > 0)
{
    foreach (var error in validationErrors)
    {
        Console.WriteLine($"错误:{error.Message},路径:{error.Path}");
    }
}
else
{
    Console.WriteLine("JSON完全符合Schema规则");
}

关键说明

  • NJsonSchema的验证结果是List<ValidationError>类型,包含错误信息和对应JSON路径,需替换原Newtonsoft.Json.Schema的结果处理逻辑。
  • 若项目使用System.Text.Json而非Newtonsoft.Json,需安装NJsonSchema包而非NJsonSchema.NewtonsoftJson,并调整JSON解析方式为JsonDocument.Parse。

内容的提问来源于stack exchange,提问作者learningdotnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:42:11