将 Json 解析为模式生成的 类 集

Parse Json into a schema-generated set of classes

我有一个 Json 架构,可以使用 NJsonSchema.CodeGeneration.CSharp 创建与之对应的 classes。因此,如果我有符合模式的 json,我应该能够轻松地将其解析为对象集合,这些对象的 classes 是从模式生成的 classes?

那么我该怎么做 - 解析 json 并取出与 json 中的对象(由模式定义)相对应的 C# class 对象?

举个例子——如果模式定义了第一个对象定义,它是第二个对象定义的数组,那么我希望能够以输出是 class 对应于第一个对象定义,它有一个成员,它是对应于第二个定义的 class 实例的 List。似乎模式知道执行此操作所需的所有信息,因此它应该是一行 - 我很感激我可以进行长时间的解析(例如转换数组中的每个项目)以获得相同的结果。

我认为这是从模式生成 C# classes 的主要目的,那么我缺少的神奇方法是什么?

我也很乐意编写 C# classes 并从中生成一个模式,如果它是一个更可行的解决方案。

我使用过 NJsonSchema 但很高兴使用任何其他 C# json 架构和代码生成技术来达到相同的目的。

更新:经过讨论,我发现如果 NJsonSchema 用于从模式生成 classes,那么每个 classes 的 TypeScript 版本有一个 fromJS 方法,听起来像我想要的,但 C# 版本中缺少它们。如果它提供解决方案,我很乐意使用 NJsonSchema 以外的东西从模式生成 classes。

我想我找到了答案,这比我预期的要简单得多。只需使用类似的东西:

var ob=JsonConvert.DeserializeObject<MyNamespace.Anonymous>(jsonString);

...其中MyNamespace是生成的C#classes的命名空间,MyNamespace.Anonymous是schema根对应的class(默认名称来自 NJsonSchema),jsonString 要解析的字符串。

我认为解决方案需要 schema-aware,因为它需要了解从架构创建的所有 classes,但我猜它 'works that out' 来自反射在 Anonymous class 上给出了它的属性 classes,反映了那些等等。

我是over-thinking问题所在!