在许多JSON解析器中,JSON的元素表示为对象(引用)类型.

然而在C#系统中.文本Json JsonElementstruct类型.为什么JSOneElement是 struct 类型?

I'm worried about this could cause unnecessary memory copy.
What if JsonElement has very big data? what if JsonElement has array that contains over 1000 objects?

推荐答案

如果你看source code,你会发现JsonElement非常轻.它只有两个字段:对包含文档的引用和文档的索引.尤其是,它直接包含元素的所有数据.

这会造成大量内存流失,因为(例如)迭代文档中的所有元素是高效的,而不必创建大量对象.

Csharp相关问答推荐

O(N)测试失败

为什么这个Reflection. Emit代码会导致一个DDL ViolationException?

如何阻止注释被包含在C#release build. exe中

为什么在ANTLR4中会出现不匹配的输入错误?""

如何注册实现同一接口的多个服务并注入到控制器构造函数中

REST API端点中异步后台代码执行的类型

AsNoTrackingWithIdentitySolutions()似乎不起作用?

模型绑定RazorPage表单

有没有办法在WPF文本框中添加复制事件的处理程序?

自动映射程序在GroupBy之后使用项目

使用两个不同的枚举作为Switch语句中的CASE生成唯一值

为什么EventInfo.EventHandlerType返回可为空的Type值?

ASP.NET Core AutoMapper:如何解决错误 CS0121调用在以下方法或属性之间不明确

当前代码Cosmos DB 3.37.1:PartitionKey key key mismatch exception

N层解决方案上的依赖注入-删除样板

在';、';附近有错误的语法.必须声明标量变量";@Checkin";.';

从Base64转换为不同的字符串返回相同的结果

类/值和日期的泛型方法

在等待OnGetAsync时打开Razor Page显示微调器

在Visual Studio 2022中查找Xamarin模板时遇到问题