将子项反序列化为对象

时间:2013-05-02 14:38:30

标签: c# json json.net

我在这里尝试过一些例子,但是我的头发已经撕掉了。

我做了一个查询,它返回JSON,在JSON中有很多哈希,例如。

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

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

我已经创建了对象myObject,其中包含所有字段,但我仍然坚持反序列化。

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

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

有什么想法吗?我知道我可以循环,这给了我很多JTokens,但这就是我被卡住的地方。

2 个答案:

答案 0 :(得分:0)

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

对于这样的情况,我建议您使用dynamic - 这是它闪耀的地方。如果您确实知道所有字段名称,那么您的类应该反序列化而不会出现任何问题。

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

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

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

您应该返回动态对象列表。你可以为你想要的字段戳它:

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

答案 1 :(得分:0)

所以我想通了,基本上是从集合JToken得到的,这是我在JSON对象上遍历.Children()时得到的,我可以将它转换为{{1并且JProperty获取名称或.Name获取值,或者我可以直接反序列化为对象,基本上是这样的:

.Value

然后我不知道需要知道我反序列化的属性的名称。