SerializeObject 抛出 System.OutOfMemoryException

2024-07-04

我对“JsonConvert.SerializeObject”有一个严重的问题我需要序列化超过500,000条字典记录才能使序列化抛出以下错误; System.OutOfMemoryException。我尝试在 foreach 中单独序列化每个键、值对,但它已被锁定。显然这是一个优化问题,但我不知道从哪里开始,线程要分段序列化? 这些函数只需很少的值就可以正常工作。 我的代码:

string json = JsonConvert.SerializeObject(DatatableToDictionary(dt), Newtonsoft.Json.Formatting.Indented);

public List<Dictionary<string, object>> DatatableToDictionary(DataTable dt, List<DataColumn> columns)
{
    return dt.Rows.Cast<DataRow>().Select(
         r => columns.ToDictionary(c => c.ColumnName, c => r[c.ColumnName])).ToList();
}

当您处理大量数据时,可以将其流式传输到文件中,以避免一次性将所有数据存储在内存中。

var filePath = @"C:\somewhere.json";

using (var fs = File.Open(filePath, FileMode.CreateNew))
using (var sw = new StreamWriter(fs))
using (var jw = new JsonTextWriter(sw))
{
    var serializer = new JsonSerializer();
    serializer.Serialize(jw, dictionary);
}

这将一次序列化一点,并避免内存中出现巨大的字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SerializeObject 抛出 System.OutOfMemoryException 的相关文章

随机推荐

  • 让 Android 源中的应用程序编译到 system/app 而不是 data/app 中?

    我正在从源代码编译 Android ROM 并且我有几个可以编译的应用程序 但会编译到手机上的数据 应用程序中 它们可以通过手机设置卸载 我希望它们不可能从手机中卸载 并编译到系统 应用程序而不是数据 应用程序中 有什么建议吗 编辑 错别字
  • 为什么我无法初始化 Map? [复制]

    这个问题在这里已经有答案了 我想存储一组int String值 但是ints 不一定是增量的 这意味着数据可以是 lt 1 first gt lt 3 second gt lt 9 third gt 所以我正在尝试创建与Dictionary
  • Gulp Sass - 如何正确命名输出 css?

    我正在阅读有关 sass 的教程here https scotch io tutorials getting started with sass然后我尝试了其他方法 但在本教程中无法得到答案 这就是问题所在 我的 gulpfile js 中
  • 如何仅针对一项特定修改器更改应用动画?

    如何只申请 animation to offset同时保持其他修改器更改不受其影响 添加 animation偏移后也会使字体大小发生变化 Main view var body some View GeometryReader geo in
  • Androidx 模块,android:attr/ttcIndex 和 android:attr/fontVariationSettings 未找到

    我正在将所有支持 appcompat 库迁移到 androidx 所有更新后 由于此错误 我无法构建我的项目 app processDebugManifest UP TO DATE AGPBI kind error text error r
  • 处理 jQuery 中的所有事件类型

    在使用 jQuery 的应用程序中 我希望每次触发任何类型的事件 包括自定义事件 时都记录到控制台 无论如何 是否可以在不修改 jQuery 源代码并且不绑定到每个可能的事件类型的长列表的情况下执行此操作 var oldTrigger jQ
  • pyqt 中的代码编辑器示例

    我尝试学习一些Qt PyQt 为此 我使用了代码编辑器示例 http doc qt io qt 4 8 qt widgets codeeditor example html的文档 当前行的突出显示效果很好 但行号不显示 实际上LineNum
  • 即使授予用户组完全权限后也无法在 C:\ProgramData\ 中创建文件

    我们有一个应用程序尝试写入 C ProgramData 文件夹中的 Access 数据库 mdb 在启用 UAC 的计算机上 我们发现访问数据库失败 因为它似乎无法创建锁定文件 默认情况下 可能是由于 UAC 用户 包括管理员 似乎没有写入
  • Rails 3 Observer——希望学习如何为多个模型实现观察者

    我想添加一个 Auditor Observer 它可以在创建 3 个模型 书籍 人物 作者 后随时执行操作 我最近听说了观察者功能 但找不到任何有关该功能的文档 Rails 3 支持吗 如何创建一个 Auditor Observer 来为
  • R as.POSIXct() 删除小时、分钟和秒

    我正在尝试用 R 来分析一些测量数据 我有一个 csv 文件 其中包含超过 200 万条测量线 这是一个例子 2014 10 22 21 07 03 00 00 7432442 0 2014 10 22 21 07 21 00 00 743
  • 禁用 Android Monkey 上的系统级事件

    当猴子测试我的应用程序时 adb shell monkey p com foo bar throttle 1000 v 14400 我注意到它可以访问我设备上的各种系统设置 例如音频控制和屏幕截图 根据http developer andr
  • 使用 gdb 在 xv6 上调试用户代码

    我正在做一个基于 xv6 的操作系统类 并且编写了一个需要在其上运行的程序 我知道我可以调试内核代码make qemu gdb但我不知道如何调试我自己的用户程序 假设我想调试cat 我该怎么做呢 Thanks 附 不是有xv6标签吗 这个问
  • Gitweb 失败:致命:refs/heads/master 缺少对象 0000000000000000000000000000000000000000 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试将 gitweb 与一组由
  • 错误:“访问受限 URI 被拒绝”

    访问受限 URI 被拒绝 代码 1012 中断此错误 xhttp send null function getXML xml file if window XMLHttpRequest var xhttp new XMLHttpReques
  • 如何使用生产存储桶数据启动 Firebase 存储模拟器?

    我正在使用 Firebase 模拟器来运行所有 Firebase 服务 我已成功通过运行以下命令来运行模拟器并备份 Firestore 数据 firebase emulators start import my directory 但我找不
  • Chart.js 忽略画布高度和宽度

    继Chart js 文档 http www chartjs org docs getting started creating a chart我正在尝试绘制一个小图表
  • 无堆栈协程与堆栈协程有何不同?

    背景 我问这个问题是因为我目前有一个具有许多 数百到数千 线程的应用程序 这些线程中的大多数在很大一部分时间内处于空闲状态 等待将工作项放入队列中 当工作项可用时 它会通过调用一些任意复杂的现有代码来处理 在某些操作系统配置上 应用程序会遇
  • 输入与输出上的 HTML/XSS 转义

    从我所看到的一切来看 对用户输入的内容转义 html 为了防止 XSS 的目的 的惯例似乎是在渲染内容时执行此操作 大多数模板语言似乎默认都会这样做 我遇到过类似的事情这个 stackoverflow 答案 https stackoverf
  • Scala:使用具体类型实现 Map

    我在 Scala 类型系统中遇到了某种怪癖 这让我有点困惑 我正在尝试创建一个扩展 Map String String 的类 但我不太清楚如何以编译器接受的方式实现 方法 这是我现在的代码 class ParamMap val pairs
  • SerializeObject 抛出 System.OutOfMemoryException

    我对 JsonConvert SerializeObject 有一个严重的问题我需要序列化超过500 000条字典记录才能使序列化抛出以下错误 System OutOfMemoryException 我尝试在 foreach 中单独序列化每