我有一个 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
),以及jsonString
要解析的字符串。
我认为该解决方案需要具有模式感知能力,因为它需要了解从模式创建的所有类,但我想它可以通过反映Anonymous
它给出的类以及它的属性在哪里来“解决”类,反思那些等等。
是我多虑了问题!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句