如何解析数组中的Json对象?

时间:2014-10-10 05:54:16

标签: c# arrays json parsing json.net

[{"conversation":{"id":"04d27d987de7f897580096b099815691cd4a89_ecf47fb8-cd72-4e5d-925c-5a63aa2fb315","wid":"04d27d987de7f897580096b099815691cd4a89","nicknames":{"owner":"Wiz_boltebony","originator":"Username123"},"group_token":"5a4b2b9d-ed39-4029-a76e-347a8c99806b"}},{"conversation":{"id":"05043a6393ec32806194414f2239a8697fa788_ecf47fb8-cd72-4e5d-925c-5a63aa2fb315","wid":"05043a6393ec32806194414f2239a8697fa788","nicknames":{"owner":"Summer_Reflection","originator":"Wiz_boltebony"},"group_token":"0b77eb02-aa57-4811-91fd-5fa61997b6a0"}}]

我想从这个json"数组"中解析出所有(group_token":" 0b77eb02-aa)......等值。

这是我的代码:

dynamic j = JsonConvert.DeserializeObject(contents);
foreach (var c in j[0]["conversation"])
{
    Console.WriteLine(c["group_token"]);
}

这是关于JSON如何布局的图像: http://gyazo.com/5840a31b71d4cbea626899030debe5d8

我的代码根本不起作用!如何提取这些group_token值?

2 个答案:

答案 0 :(得分:3)

您需要稍微更改代码(遍历对象,而不是属性);

dynamic j = JsonConvert.DeserializeObject(contents);
foreach (var c in j)
    Console.WriteLine(c["conversation"]["group_token"]);

您当前的代码会遍历第一个conversation对象的属性,并尝试获取每个属性的group_token子元素,这是错误的。

答案 1 :(得分:1)

你也可以在下面试试。完全同意@Ulugbek Umirov

var _jArr = (JArray)JsonConvert.DeserializeObject(contents);
IEnumerable<string> _groupToken = _jArr.Select(conv => conv["conversation"]["group_token"].ToString());
相关问题