如何在反序列化期间验证模式

本文关键字:验证 模式 反序列化 | 更新日期: 2023-09-27 18:05:37

我为一个项目中的几个类定制了转换器,我想验证它们的模式,作为反序列化的一部分。

这感觉应该是非常直接的,但是我在文档中找不到。

我可以简单地根据ReadJson的第一部分的模式进行验证,或者使用JsonValidatingReader,但它似乎应该是转换器本身的一部分,或者明确地成为API的一部分,而不是"自己把它粘在一起"。

我在源代码中看到一些提到JsonContract,但不清楚这是否是我需要的,并且搜索谷歌只是导致JsonContractResolver的一堆结果。(我也不太清楚它是做什么的,也不清楚我为什么需要它。)如果它在文档中,我找不到它。

我发现这个问题/答案说"嘿,你可以这样做",但当然没有真正说怎么做。

有人这样做过吗?我只需要手动操作吗?

编辑澄清:我知道如何验证,也知道如何反序列化。我想把它们放在一起。

如何在反序列化期间验证模式

该问题的答案中提供的链接显示了如何根据模式进行验证。下面是示例代码:

JsonSchema schema = JsonSchema.Parse(schemaJson);
JObject person = JObject.Parse(@"{
  ""name"": ""James"",
  ""hobbies"": ["".NET"", ""Blogging"", ""Reading"", ""Xbox"", ""LOLCATS""]
}");
bool valid = person.IsValid(schema);
// true