JsonDocument 可以处理 Span ,也可以处理 Stream 。
例子:

这里我通过 File .OpenRead 把 json 文件转化为 stream 。然后使用 Json Document.Parse 方法把 stream 解析成 JSON 文档对象模型。
注意,这里我使用了 C# 8 的 using var 语法,这个以后再说。
下面我们开始从这个 JSON 文档对象模型的根节点开始遍历,也就是 RootElement :

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

最后一行使用 GetString 方法来获得该属性的字符串值。
然后我们可以写一个递归调用的方法来遍历整个模型的每个属性:

这个方法接受 JsonElement 类型的对象,然后对该元素的属性进行循环。
如果当前属性是另一个对象,那么就继续递归调用这个方法;
否则就输出原始的文本。
最后调用该方法:

输出结果为:

与json文件的内容匹配。
Utf8JsonWriter 类
下面研究一下如何写入json文件。这里需要使用Utf 8JsonWriter 类。
直接看代码:

这个类需要传递的参数类型是 Stream 或者Buffer,也就是向 Stream 或 Buffer 里面写入数据。
那么就提供一个 buffer :

下面单独写一个方法,来生成json数据:

参数类型是Utf 8JsonWriter 。通过智能提示可以看到它提供了很多用于写入不同类型数据的方法。
写 JSON 对象
现在我想写一个json对象,那么就从Write StartObject () 开始,然后以WriteEnd Object() 结束 :

这样的话,实际上我已经拥有了一个合法的json文档。
写属性和值
可以分开写属性和值:








