【发布时间】:2021-08-27 20:14:09
【问题描述】:
我们正在开发一个基于 .Net 核心的 Web api 应用程序,为此我们需要针对基于 c# 的类型验证传入的请求主体,该请求主体是 JSON 格式。
我们此时正在评估NJsonSchema 库以查看它是否会引发重复属性错误。
但看起来它不支持此验证。我们还检查了来自 NewtonSoft 的 JSON 架构验证器,但似乎它也不支持重复的属性验证。
下面是我们使用的使用NJsonSchema的最小化代码-
using NewtonSoft.Json;
public class MyRequest
{
[JsonRequired]
[JsonProperty("name")]
public string Name { get; set; }
}
当我们像这样传递一个 JSON 对象时 -
{"name":"abc","name":"xyz"}
我们需要我们的 JSON 验证器来为 duplicate property 抛出错误
我们的示例测试如下所示 -
[Test]
public async System.Threading.Tasks.Task SchemaValidation_WithDuplicateProperty_Async()
{
var jsonString = await File.ReadAllTextAsync("Data//JsonWithDuplicateProperty.json");
var schema = JsonSchema.FromType<MyRequest>();
var errors = schema.Validate(jsonString);
Assert.That(errors.Count(), Is.EqualTo(1));
}
所以我的问题 - 过去有没有人这样做过?或者是否有任何.net core 的库为重复属性提供JSON 验证和/或可以使用NJsonSchema 或NewtonSoft 来完成。
【问题讨论】:
-
进一步看,似乎使用JsonLoadSettings 可能会有所帮助,并且在这种情况下专门设置
DuplicatePropertyNameHandlingseems to throw。
标签: c# asp.net-web-api json.net njsonschema