.NET Core 3.0 新 JSON API - JsonDocument

JsonDocument 

JsonDocument是基于Utf8JsonReader 构建的JsonDocument 可分析 JSON 数据并生成只读文档对象模型 (DOM),可对模型进行查询,以支持随机访问和枚举。使用 JsonDocument 分析常规 JSON 有效负载并访问其所有成员比使用 Json.NET  2-3 倍,且为合理大小(即 < 1 MB)的数据所分配的量非常少。 

JsonDocument可以处理Span,也可以处理Stream 

 

例子: 

.NET Core 3.0 新 JSON API - JsonDocument

这里我通过File.OpenReadjson文件转化为stream。然后使用JsonDocument.Parse方法把stream解析成JSON文档对象模型。 

注意,这里我使用了C# 8using var语法,这个以后再说。 

 

下面我们开始从这个JSON文档对象模型的根节点开始遍历,也就是RootElement 

.NET Core 3.0 新 JSON API - JsonDocument

 

然后通过root这个JsonElement类型的对象的GetProperty方法来获得相应的属性,而且这个方法可以连串使用: 

.NET Core 3.0 新 JSON API - JsonDocument

最后一行使用GetString方法来获得该属性的字符串值。 

 

然后我们可以写一个递归调用的方法来遍历整个模型的每个属性: 

.NET Core 3.0 新 JSON API - JsonDocument

这个方法接受JsonElement类型的对象,然后对该元素的属性进行循环。 

如果当前属性是另一个对象,那么就继续递归调用这个方法; 

否则就输出原始的文本。 

 

 

最后调用该方法: 

.NET Core 3.0 新 JSON API - JsonDocument

 

输出结果为: 

.NET Core 3.0 新 JSON API - JsonDocument

与json文件的内容匹配。 

 

 

最后解释一下什么是递归: 

 

 

 

 

.NET Core 3.0 新 JSON API - JsonDocument

更详细的内容请查看原文连接。