C# 访问嵌套ExpandoObject中的数据
我有以下代码:C# 访问嵌套ExpandoObject中的数据,c#,json,win-universal-app,expandoobject,C#,Json,Win Universal App,Expandoobject,我有以下代码: string responJsonText = "{'A609C5DC-E86A-11E5-BD37-3EF25AFC4F71': {'username': 'testuser1','mydata1': 52,'mydata2': 1,'mydata3': '+1889','lastupdate': '2016-03-21 11:49:28'},'C5DD67C5-F34B-34DC-DB67-4F5376BD7813': {'username': 'testus
string responJsonText = "{'A609C5DC-E86A-11E5-BD37-3EF25AFC4F71': {'username': 'testuser1','mydata1': 52,'mydata2': 1,'mydata3': '+1889','lastupdate': '2016-03-21 11:49:28'},'C5DD67C5-F34B-34DC-DB67-4F5376BD7813': {'username': 'testuser2','mydata1': 52.7,'mydata2': 1.5,'mydata3': '+2373','lastupdate': '2016-03-20 14:38:28'}}";
//data usually retrieved from web service
dynamic response = new ExpandoObject();
response = Newtonsoft.Json.JsonConvert.DeserializeObject<ExpandoObject>(responJsonText);
foreach (KeyValuePair<string, object> kvp in response)
{
Debug.WriteLine("{0} = {1}", kvp.Key, kvp.Value);
foreach (KeyValuePair<string, object> kvp2 in kvp.Value as ExpandoObject)
Debug.WriteLine("{0} = {1}", kvp2.Key, kvp2.Value);
}
这可能吗?有很多方法可以在
responJsonText
中获取用户名。一种简单的方法如下所示:
string responJsonText = "{'A609C5DC-E86A-11E5-BD37-3EF25AFC4F71': {'username': 'testuser1','mydata1': 52,'mydata2': 1,'mydata3': '+1889','lastupdate': '2016-03-21 11:49:28'},'C5DD67C5-F34B-34DC-DB67-4F5376BD7813': {'username': 'testuser2','mydata1': 52.7,'mydata2': 1.5,'mydata3': '+2373','lastupdate': '2016-03-20 14:38:28'}}";
JObject o = JObject.Parse(responJsonText);
var children = o.Children().Children()["username"].Values<string>();
foreach (var item in children)
{
Debug.WriteLine(item);
}
string responJsonText=“{'A609C5DC-E86A-11E5-BD37-3EF25AFC4F71':{'username':'testuser1','mydata1':52,'mydata2':1,'mydata3':'+1889','lastupdate':'2016-03-21 11:49:28','C5DD67C5-f34dc-DB67-4F5376BD7813':{'username':'testuser2','mydata1':52.7,'mydata2':1.5','mydata3':'mydata3':'2016-03-21:49:28';
JObject o=JObject.Parse(responJsonText);
var children=o.children().children()[“用户名”].Values();
foreach(子项中的变量项)
{
调试写入线(项目);
}
或使用类似:
JObject o=JObject.Parse(responJsonText);
IEnumerable names=o.SelectTokens($…用户名);
foreach(名称中的变量项)
{
调试写入线(项目);
}
string responJsonText = "{'A609C5DC-E86A-11E5-BD37-3EF25AFC4F71': {'username': 'testuser1','mydata1': 52,'mydata2': 1,'mydata3': '+1889','lastupdate': '2016-03-21 11:49:28'},'C5DD67C5-F34B-34DC-DB67-4F5376BD7813': {'username': 'testuser2','mydata1': 52.7,'mydata2': 1.5,'mydata3': '+2373','lastupdate': '2016-03-20 14:38:28'}}";
JObject o = JObject.Parse(responJsonText);
var children = o.Children().Children()["username"].Values<string>();
foreach (var item in children)
{
Debug.WriteLine(item);
}
JObject o = JObject.Parse(responJsonText);
IEnumerable<JToken> names = o.SelectTokens("$..username");
foreach (var item in names)
{
Debug.WriteLine(item);
}