C# 使用System.JSON迭代JSON

C# 使用System.JSON迭代JSON,c#,json,.net-4.5,C#,Json,.net 4.5,我正在探索.NET 4.5System.Json库的功能,但是没有太多文档,而且由于流行的Json.NET库,搜索起来非常困难 基本上,我想知道如何循环使用一些JSON,例如: {“人”:{“西蒙”:{Age:25},“史蒂夫”:{Age:15}} 我有一个字符串形式的JSON,我想遍历并显示每个人的年龄 所以首先我要做: var jsonObject=jsonObject.Parse(myString) 但我不知道下一步该怎么办。我很惊讶parse方法返回的是JsonValue而不是JsonO

我正在探索.NET 4.5
System.Json
库的功能,但是没有太多文档,而且由于流行的Json.NET库,搜索起来非常困难

基本上,我想知道如何循环使用一些JSON,例如:

{“人”:{“西蒙”:{Age:25},“史蒂夫”:{Age:15}}

我有一个字符串形式的JSON,我想遍历并显示每个人的年龄

所以首先我要做:

var jsonObject=jsonObject.Parse(myString)

但我不知道下一步该怎么办。我很惊讶parse方法返回的是JsonValue而不是JsonObject

我真正想做的是:

foreach (var child in jsonObject.Children)
{
  if (child.name == "People")
{
 // another foreach to loop over the people
 // get their name and age, eg. person.Name and person.Children.Age (LINQ this or something)

}

}
有什么想法吗?

请使用这个库,它比system.json本身好得多

urclassobj = await JsonConvert.DeserializeObjectAsync<urclass>(json string)
对于json的对象

 string json2Send = await JsonConvert.SerializeObjectAsync(urclassobject);
使用和一些Linq

string json = @"{ ""People"": { ""Simon"" : { Age: 25 }, ""Steve"" : { Age: 15 } } }";

var people =  JsonConvert.DeserializeObject<JObject>(json)["People"];

var dict = people.Children()
                 .Cast<JProperty>()
                 .ToDictionary(p => p.Name, p => p.Value["Age"]);
string json=@“{”人“:{”西蒙“:{Age:25}”,“史蒂夫“:{Age:15}}}”;
var people=JsonConvert.DeserializeObject(json)[“people”];
var dict=people.Children()
.Cast()
.ToDictionary(p=>p.Name,p=>p.Value[“Age”]);

既然被接受的答案对我没有多大帮助,因为这是一个典型的用法“使用这个库更好!”我就明白了

返回一个JsonValue对象,该对象是System.Json中所有Json*类的基类。 当您调用JsonObject.Parse(..)时,由于继承,实际上正在调用JsonValue.Parse()

要迭代JsonObject,可以使用:

var jsonObject = JsonValue.parse(jsonString);

foreach (KeyValuePair<string, JsonValue> value in jsonObject)
{
    Console.WriteLine("key:" + value.Key);
    Console.WriteLine("value:" + value.Value);
}

这看起来是一个很好的信息,所以我没有投反对票,但他明确表示,他正在努力学习如何使用
System.Json
库进行操作。考虑到这个问题更多的是关于学习而不是解决问题,这并不能真正回答这个问题……虽然我不是被否决的选民,但我可以告诉你,你被否决的原因是,最初的问题是专门询问与System.Json有关的信息,而不是与Json.NET有关的信息。至于为什么你的答案被接受,即使它不是直接针对这个问题?嗯。
JsonObject.Parse(myJsonString);
var jsonObject = JsonValue.parse(jsonString);

foreach (KeyValuePair<string, JsonValue> value in jsonObject)
{
    Console.WriteLine("key:" + value.Key);
    Console.WriteLine("value:" + value.Value);
}
for (var i = 0; i < jsonObject.Count; i++)
{
    Console.WriteLine("value:" + jsonObject[i]);
}
if (jsonObject.GetType() == typeof JsonObject){
    //Iterate like an object 
}else if (jsonObject.GetType() == typeof JsonArray){
    //iterate like an array
}