如何以人类可读的格式(例如JSON)打印SchemaValidationResults?文件页讨论不同的输出格式(JsonSchemaOptions.OutputFormat属性),但我不知道如何实现文本表示。
我的代码有以下模式:
JsonSchema schema = _SchemaReader.Get(schemaPath);
JsonValue json = JsonValue.Parse(jsonDoc);
SchemaValidationResults validationResult = schema.Validate(json, new JsonSchemaOptions()
{
OutputFormat = SchemaValidationOutputFormat.Detailed
});
validationResult.Should().BeValid(); // Custom FluentAssertions extension自定义FluentAssertions扩展代码:
// Subject is SchemaValidationResults
Execute.Assertion.
Given(() => Subject).
ForCondition(s => s.IsValid).
FailWith("Validation Errors: {0}", Subject.ErrorMessage);但由此产生的错误消息是:"Items at indices [2,4] failed validation.",但我希望看到更全面的输出。
发布于 2020-07-15 05:32:58
输出是2019年至09年草案的递归结构。这意味着更多的结果包含在高层结构中。
在您的示例中,您需要查找错误,因此需要查看validationResult.NestedResults (以前的编辑有.Errors)属性。在这里,您将找到您想要的其他细节。
或者,可以通过设置JsonSchemaOptions.OutputFormat = SchemaValidationOutputFormat.Basic;将输出格式更改为平面列表。这也是规范中详细描述的输出格式之一。
发布于 2020-07-23 01:19:21
对于我的情况,我得到验证错误列表的方式如下。
public static List<string> GetValidationErrors(SchemaValidationResults validationResult)
{
if (validationResult.IsValid)
{
return new List<string>(0);
}
var errorList = new List<string>(8);
if (!string.IsNullOrWhiteSpace(validationResult.ErrorMessage))
{
errorList.Add(validationResult.ErrorMessage);
}
foreach (SchemaValidationResults vrslt in validationResult.NestedResults)
{
errorList.AddRange(GetValidationErrors(vrslt));
}
return errorList;
}https://stackoverflow.com/questions/62907352
复制相似问题