JsonDocument类 

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

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

例子: 

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

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

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

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

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

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

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

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

否则就输出原始的文本。

最后调用该方法:

输出结果为:

与json文件的内容匹配。

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

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

.NET Core 3.0 新 JSON API - JsonDocument相关推荐

  1. .NET Core 3.0 新 JSON API - JsonSerializer

    JsonSerializer  前面几节的内容可能稍微有点底层,我们大部分时候可能只需要对C#的类进行串行化或者将JSON数据反串行化成C#类,在.NET Core 3.0里面,我们可以使用JsonS ...

  2. .NET Core 3.0 新 JSON API - Utf8JsonWriter

    Utf8JsonWriter类  下面研究一下如何写入json文件.这里需要使用Utf8JsonWriter类. 直接看代码: 这个类需要传递的参数类型是Stream或者Buffer,也就是向Stre ...

  3. Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍

    Razor Page介绍 前言 上周期待已久的Asp.Net Core 2.0提前发布了,一下子Net圈热闹了起来,2.0带来了很多新的特性和新的功能,其中Razor Page引起我的关注,作为web ...

  4. ASP.NET Core 1.0开发Web API程序

    .NET Core版本:1.0.0-rc2 Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2 开发及运行平台:Window ...

  5. Entity Framework Core 2.0 新特性

    一.模型级查询过滤器(Model-level query filters) ef core2.0包含了一个新特性,我们叫他模型级查询过滤器(Model-level query filters).此特性 ...

  6. 在.Net Core 3.0中尝试新的System.Text.Json API

    .NET Core 3.0提供了一个名为System.Text.Json的全新命名空间,它支持reader/writer,文档对象模型(DOM)和序列化程序.在此博客文章中,我将介绍它如何工作以及如何 ...

  7. [译]试用新的System.Text.Json API

    译注 尝试新的System.Text.Json API 对于.NET Core 3.0,我们 提供了一个名为System.Text.Json的全新命名空间 ,支持读取器/写入器,文档对象模型(DOM) ...

  8. asp.net core 2.0 web api基于JWT自定义策略授权

    JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端 ...

  9. 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传...

    第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三 ...

最新文章

  1. 【新周报(045)】青少年编程竞赛交流群周报
  2. vs2010配置python_VS2010下python3的配置
  3. SICP 习题 (2.7) 解题总结 : 定义区间数据结构
  4. oracle 树状结构一直出现不了_SEO站内优化:网站结构优化(十一)
  5. Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
  6. boost::coroutines模块实现斐波那契的测试程序
  7. Codeforces Round #665 (Div. 2)
  8. 备案网站建设方案书模板
  9. java邮件服务器搭建_邮件服务器+javamail(仅包括发送)搭建
  10. 机器学习基石-林轩田-第一周笔记
  11. 一些在网上搜集的奇奇怪怪的bat代码。。。仅供参考!小心中招!
  12. Linux下的围棋软件,在Linux下和电脑下围棋
  13. 获取ccid的标准方法
  14. RF自动化测试框架(一)
  15. word文件打开之后不能编辑是怎么回事
  16. 在一个字符串中搜索某个特定的字符值
  17. 微信内点击链接或扫描二维码直接打开手机默认浏览器打开指定网页
  18. 哪个配件最爱坏?电脑配件寿命浅谈
  19. 零基础学Java语言--第6周编程题
  20. 【2023最新】MySQL安装配置教程(5.7+8.0)

热门文章

  1. 第2课:关闭被黑客扫描的端口
  2. 32位应用程序单个进程最大占用内存是4GB
  3. chromebook刷机_如何获取Android应用以查看Chromebook上的外部存储
  4. Install Odoo 11 on CentOS 7
  5. 对01背包的分析与理解(图文)
  6. chrome插件网站
  7. 你被大数据“杀熟”过吗?怎么解决的?丨Q言Q语
  8. 甲骨文宣布供应链管理云平台支持LogFire仓库管理系统
  9. VMware Workstation 12新建虚拟机
  10. js null加法的处理