c# - 使用 System.Json 遍历 JSON

标签 c# json .net-4.5

我正在探索 .NET 4.5 System.Json 库的功能,但文档不多,而且由于流行的 JSON.NET 库,搜索起来非常棘手。

我基本上想知道,我将如何遍历一些 JSON,例如:

{ "People": { "Simon": { Age: 25 }, "Steve": { 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)

}

}

有什么想法吗?

最佳答案

因为接受的答案对我没有太大帮助,因为它是典型的用途之一“更好地使用这个库!”我想通了。

是的,

JsonObject.Parse(myJsonString);

返回一个 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);
}

如果它是一个 JsonArray,我没有尝试过它是否也有效,但如果它是一个 JsonArray,那么你可能想用一个经典的 i 来做:

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
}

关于c# - 使用 System.Json 遍历 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16338917/

相关文章:

c# - 如何在 case 语句中使用范围 C#

c# - MEF 的零件特定设置

PHP数据库未添加数据

c# - .net 4.5 中是否有类似 dbgeometry makevalid 的东西

c# - 在 C# 中传递命令行参数

c# - 如何从sql中获取json格式的数据

php - JSON 转义序列

PHP 解析错误 : syntax error, 意外 '$y6956096d' (T_VARIABLE)

c# - 在 .NET Framework 4.0 中使用 SHA256 签名 XML 算法

.net-4.5 - .net 4.5 异步语法