Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Json解析为模式生成的类集_C#_Json_Jsonschema_Njsonschema - Fatal编程技术网

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

C# 将Json解析为模式生成的类集,c#,json,jsonschema,njsonschema,C#,Json,Jsonschema,Njsonschema,我有一个Json模式,可以使用NJsonSchema.CodeGeneration.CSharp创建与之对应的类。因此,如果我有符合模式的json,我应该能够轻松地将其解析为对象集合,这些对象的类是从模式生成的类 那么,我该如何做呢?解析json并获得对应于json中对象的C#类对象(由模式定义) 例如,如果模式定义了第一个对象定义,它是第二个对象定义的数组,然后,我希望能够以这样的方式解析它:输出是与第一个对象定义相对应的类的实例,并且它有一个成员,该成员是与第二个定义相对应的类的实例的列表。

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

那么,我该如何做呢?解析json并获得对应于json中对象的C#类对象(由模式定义)

例如,如果模式定义了第一个对象定义,它是第二个对象定义的数组,然后,我希望能够以这样的方式解析它:输出是与第一个对象定义相对应的类的实例,并且它有一个成员,该成员是与第二个定义相对应的类的实例的
列表。模式似乎知道执行此操作所需的所有信息,因此它应该是一行-我很感激我可以进行长时间解析(例如转换数组中的每个项)以获得相同的结果

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

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

我曾经使用过
NJsonSchema
,但是我很乐意使用任何其他的C#json模式和代码生成技术来达到同样的目的


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

我想我找到了答案,这比我预期的要简单得多。只需使用以下内容:

var ob=JsonConvert.DeserializeObject<MyNamespace.Anonymous>(jsonString);
var ob=JsonConvert.DeserializeObject(jsonString);
…其中,
MyNamespace
是生成的C#类的名称空间,
MyNamespace.Anonymous
是与架构根对应的类(默认名称来自
NJsonSchema
),而
jsonString
是要解析的字符串

我认为解决方案需要有模式意识,因为它需要知道从模式中创建的所有类,但我想,通过对它所给出的
Anonymous
类的反思,以及它的属性是类的地方,以及对这些类的反思,它就“解决了”了


我想得太多了

你的问题被否决了,因为不清楚你在问什么。我看不出有什么问题。您可能会发现阅读Stackoverflow指南对如何提问很有用:感谢您的澄清,我确实想知道为什么我会得到反对票。。。我会试着用问题的形式重新表述,没问题。我想人们会认为,如果你有一个小数额或声誉,你不需要提醒,但这可以很容易地做到,当你已经走出焦点模式。这看起来像是漫无边际的问题,而不是一个问题=/已经重新编写了一个明确的问题,让我知道这是否有帮助。是的,感谢它看起来很漫无边际,不幸的是,这就是问题的本质-一个句子描述中有很多单词!