将子对象反序列化为对象



我在这里试了一些例子,但是我很头疼。

我做一个查询,它返回JSON, JSON里面有很多哈希值,例如

{ "gjwiegjeigj": { ....}, "gjeeigjwoeigj": {...} ... }

我想循环遍历其中的每一个,并将内容反序列化成一个对象。

我已经创建了对象myObject,它有所有的字段,但是我被反序列化卡住了。

我可以使用JsonConvert.DeserializeObject直接从基本对象反序列化,但我不能这样做,我需要循环并对子对象进行反序列化。

我想要一个自定义对象的数组,其中包含从Json中获取的所有字段,因此我不关心每个对象的标题(垃圾哈希)。

任何想法?我知道我可以循环,这给了我很多jtoken,但这就是我卡住的地方。

编辑:再次阅读您的问题,您提到知道和不知道所有字段。听起来你真的不知道JSON字符串将包含哪些字段。

对于这样的情况,我建议你使用dynamic——这是它的亮点。如果您确实知道所有字段名,那么您的类应该可以毫无问题地进行反序列化。

你试过什么?给我们展示一些真实的代码,以及真实的异常或问题。

反序列化为动态对象列表很简单:

dynamic toReturn = JsonConvert.DeserializeObject<List<dynamic>>(rawJson);

你应该得到一个动态对象列表。您可以戳出您想要的字段:

Console.WriteLine(toReturn.First().gjwiegjeigj);

我弄明白了,基本上要从集合中获得JToken s这就是我在JSON对象上迭代.Children()时得到的结果,我可以将其强制转换为JProperty并执行.Name以获得名称或执行.Value以获得值,或者我可以直接反序列化为对象,本质上是这样的:

MyObject record = (MyObject)JsonConvert.DeserializeObject(myRow.Children().First().ToString(), typeof(MyObject), settings);

那么我不需要知道我要反序列化的属性的名称

相关内容

  • 没有找到相关文章