0

我在这里尝试了一些例子,但我把头发扯掉了。

我做了一个查询,它返回 JSON,JSON 里面有很多散列,例如。

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

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

我已经创建了具有所有字段的对象 myObject ,但我坚持反序列化。

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

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

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

4

2 回答 2

0

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

对于这样的情况,我建议您使用dynamic-- 这是它的亮点。如果您确实知道所有字段名称,那么您的类应该可以反序列化而没有任何问题。

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

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

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

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

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

于 2013-05-02T14:44:15.560 回答
0

所以我想通了,基本上是从一个集合JTokens 中获取,这是我.Children()在我的 JSON 对象上迭代时得到的,我可以将它转换为 aJProperty.Name获取名称或.Value获取值,或者我可以反序列化直接进入一个对象,本质上是这样的:

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

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

于 2013-05-02T18:30:00.580 回答