我有一个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
类以及它的属性在哪里是类,反思这些等等来"解决这个问题">
我想得太多了!