
我正在使用JSON.NET库和ExpandoObject类的组合解决WinRT应用程序中的同一问题。该库能够将JSON数据很好地反序列化为ExpandoObjects,后者实现IDictionary。ExpandoObject的键/值对的值可以轻松地视为另一个ExpandoObject。
这是我使用的适合您的样本的方法:
void LoadJSonData(){ string testData = "{ "Name":"John Smith", "Age":42, "Parent": { "Name":"Brian Smith", "Age":65, "Parent": { "Name":"James Smith", "Age":87, } } }"; ExpandoObject dataObj = JsonConvert.DeserializeObject<ExpandoObject>(testData, new ExpandoObjectConverter()); // Grab the parent object directly (if it exists) and treat as ExpandoObject var parentElement = dataObj.Where(el => el.Key == "Parent").FirstOrDefault(); if (parentElement.Value != null && parentElement.Value is ExpandoObject) { ExpandoObject parentObj = (ExpandoObject)parentElement.Value; // do something with the parent object... } // Alternately, iterate through the properties of the expando foreach (var property in (IDictionary<String, Object>)dataObj) { if (property.Key == "Parent" && property.Value != null && property.Value is ExpandoObject) { foreach (var parentProp in (ExpandoObject)property.Value) { // do something with the properties in the parent expando } } }}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)