赞
踩
最关键的可能就是这个JToken了,这玩意能区分这个value数据是不是数组。
// data = json内容 public static void Main(string data) { var detailsDictionary = new Dictionary<string, object>(); JObject jsonObject = JObject.Parse(data); foreach (var property in jsonObject.Properties()) { if (property.Value is JArray) { detailsDictionary[property.Name] = ProcessArray((JArray)property.Value); } else { detailsDictionary[property.Name] = property.Value.ToString(); } } // Use the detailsDictionary as needed foreach (var keyValuePair in detailsDictionary) { Debug.Log(keyValuePair.Key + " + " + keyValuePair.Value); } } static object ProcessArray(JArray array) { var list = new List<object>(); foreach (var item in array) { if (item is JObject) { var nestedDictionary = new Dictionary<string, object>(); foreach (var prop in ((JObject)item).Properties()) { nestedDictionary[prop.Name] = ProcessToken(prop.Value); } list.Add(nestedDictionary); } else { list.Add(item.ToString()); } } return list; } static object ProcessToken(JToken token) { switch (token.Type) { case JTokenType.Array: return ProcessArray((JArray)token); case JTokenType.Object: var nestedDictionary = new Dictionary<string, object>(); foreach (var prop in ((JObject)token).Properties()) { nestedDictionary[prop.Name] = ProcessToken(prop.Value); } return nestedDictionary; default: return token.ToString(); } }
这样就把json里面的所有数据都解析出来了,然后对其进行操作就可以了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。