我看了一下就2层,如果这个是固定的话,那么先循环外层,每一层再算 里面的个数 StringBuilder sb = new StringBuilder();
string str = "[{ID:'1',Name:'John',Other:[{Age:'21',Sex:'0'}]},{ID:'2',Name:'Good',Other:[{Age:'36',Sex:'1'}]}]";
JavaScriptArray javascript = (JavaScriptArray)JavaScriptConvert.DeserializeObject(str);
for (int i = 0; i < javascript.Count; i++ )
{
JavaScriptObject obj = (JavaScriptObject)javascript[i];
sb.Append("ID:" + obj["ID"].ToString());
sb.Append("Name:" + obj["Name"].ToString());
JavaScriptArray json = (JavaScriptArray)obj["Other"];
for (int j = 0; j < json.Count; j++){
JavaScriptObject jsonobj = (JavaScriptObject)json[j];
sb.Append("Age:" + jsonobj["Age"].ToString());
sb.Append("Sex:" + jsonobj["Sex"].ToString());
}
} 注意:新版的Newtonsoft.Json的 JavaScriptArray 换成JObect了
上面给的给规则的,不规则一样用
string str = "[{ID:'1',Name:'John',Other:[{Age:'21',Sex:'0'}]},{ID:'2',Name:'Good',Other:[{Age:'36',Sex:'1'}]}]";
JavaScriptArray javascript = (JavaScriptArray)JavaScriptConvert.DeserializeObject(str);
for (int i = 0; i < javascript.Count; i++ )
{
JavaScriptObject obj = (JavaScriptObject)javascript[i];
sb.Append("ID:" + obj["ID"].ToString());
sb.Append("Name:" + obj["Name"].ToString());
JavaScriptArray json = (JavaScriptArray)obj["Other"];
for (int j = 0; j < json.Count; j++){
JavaScriptObject jsonobj = (JavaScriptObject)json[j];
sb.Append("Age:" + jsonobj["Age"].ToString());
sb.Append("Sex:" + jsonobj["Sex"].ToString());
}
} 注意:新版的Newtonsoft.Json的 JavaScriptArray 换成JObect了
上面给的给规则的,不规则一样用
JObject obj = JObject.Parse("");
foreach (KeyValuePair<string,JToken> item in obj)
{
string key = item.Key;
JArray value = (JArray)item.Value;
}
var list = (from d in dic
let l = d
from t in l
select t).ToList();
{
var path = "../../json.txt";
var jsonString = System.IO.File.ReadAllText(path);
Console.WriteLine(jsonString); var jsonObj = JObject.Parse(jsonString) as JObject;
Console.WriteLine(jsonObj); ProcessJObject( jsonObj); // 遍历所有的属性
var enumerator = jsonObj.GetEnumerator();
while (enumerator.MoveNext())
{
var current = enumerator.Current;
if (current.Value is JArray)
{
var array = current.Value as JArray;
for (int i = 0; i < array.Count; i++)
{
var item = array[i] as JObject;
ProcessJObject( item);
}
}
} }static void ProcessJObject(JObject target)
{
var enumerator = target.GetEnumerator();
while (enumerator.MoveNext())
{
var current = enumerator.Current;
Console.WriteLine(current.Key);
Console.WriteLine(current.Value);
}
}