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



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

那么,我如何才能做到这一点——解析json并获得与json中的对象(由模式定义(相对应的C#类对象呢?

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

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

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

我使用过NJsonSchema,但很乐意使用任何其他实现相同目的的C#json模式和代码生成技术。

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

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

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

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

我认为该解决方案需要有模式意识,因为它需要知道从该模式创建的所有类,但我想它通过反思它所给定的Anonymous类以及它的属性在哪里是类,反思这些等等来"解决这个问题">

我想得太多了!

最新更新