将Json解析为模式生成的一组类

问题描述

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

那么我该怎么做-解析json并获取与json中的对象相对应的C#类对象(由架构定义)?

作为一个例子-如果模式定义了一个第一对象定义,该对象定义是第二个对象定义的数组,那么我希望能够以这样的方式来解析它,即输出是与之对应的类的实例。第一个对象定义,它具有一个成员,该成员是与第二个定义对应的类的实例的List。似乎该模式知道执行此操作所需的所有信息,因此它应该是一行-我感谢我可以进行长时间的解析(例如,转换数组中的每个项目)以达到相同的结果。

我认为这是从架构生成C#类的主要目的,那么我缺少什么魔术方法

如果它是更可行的解决方案,我也很高兴编写C#类并从中生成模式。

我使用过njsonSchema,但很高兴使用达到相同目的的任何其他C#json模式和代码生成技术。

更新:经过讨论,我发现如果使用njsonSchema从架构中生成类,则这些类的TypeScript版本每个都有一个fromJS方法,听起来像什么我想要,但C#版本中缺少它们。如果提供了解决方案,我很高兴使用njsonSchema之外的其他方式从架构中生成类。

解决方法

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

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

......,其中MyNamespace是所生成的C#类的命名空间,MyNamespace.Anonymous是与模式根(来自NJsonSchema的默认名称)相对应的类,而{{ 1}}要解析的字符串。

我认为该解决方案需要了解模式,因为它需要了解从该模式创建的所有类,但是我想它可以通过对jsonString类的反思而“行之有效”给定的,它的属性在哪里是类,等等。

我想得太多了!