- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对“JsonConvert.SerializeObject”有一个严重的问题我需要序列化超过 500,000 条字典记录才能使序列化抛出以下错误;系统.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);
}
这将一次序列化一点,避免内存中有一个巨大的字符串。
关于c# - SerializeObject 抛出 System.OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598171/
我有序列化对象的功能。它在每种情况下都工作正常,除非我使用特定对象运行。这是包含任务的类的对象。但我不明白为什么这会成为问题。 在 Debug模式下,代码只是卡住,没有任何错误或任何异常。只是停下来等
我发现下面的代码可以从表单数据创建一个对象,到目前为止它运行良好,但我想更进一步,将包含数字的字符串转换为整数。构建函数处理数据部分,但在我使用这段代码的地方失败了: base[key] = isNa
我正在使用 Newtonsoft.Json 来序列化自定义类,但我对库如何处理 double 值的默认值有疑问。 类可以是这样的: class Person { public string F
我正在尝试将数据集转换为 .net core 2.0 中的 JSON,并使用以下代码来执行此操作 return Ok(JsonConvert.SerializeObject(dataset, Form
我在我的项目中添加了 json dll 并尝试序列化对象: ProductType itemToEdit = new ProductType("Name"); string jsonString
以前从未见过,基本上我的 MSMQ 调用抛出访问被拒绝,在 Visual Studio 中显示为( exception.ToString()) System.Messaging.MessageQueu
我在手机上找不到该文件。我想要一个桌面应用程序,可以读取我用手机保存的文件(加速度计数据),并且因为我对 Android 开发非常陌生,所以我决定最简单的方法就是在文件系统中找到它,然后打开通过以下方
将 .net 类序列化为 json 并在 javascript 中使用它的正确方法是什么? 例如在服务器端我们有这个: public ActionResult Index() {
我有一个以 JSON 格式返回数据库表的 WCF 服务。 SeralizeObject 将 unicode 添加到我的 httpresponse,我该如何删除它? 代码: using (var db
我有一个对象说: public class Comment { public string Id { get; set; } public string Author { get; s
我需要将 .net 对象转换成这种格式: { "http://www.example.com/extension/powered-by": { "name
Json.Net中默认的ident好像是2个空格: var result = JsonConvert.SerializeObject(jsonString, Formatting.Indented);
我在方法 JsonTypeConverter.ConvertTo 中得到 StackOverflowException调用 Project.Settings.Default.Save() 时 我认为这
我有一个简单的类: public class ProductListStoredModel: List { public int NextId { get; set; } } 如
我对“JsonConvert.SerializeObject”有一个严重的问题我需要序列化超过 500,000 条字典记录才能使序列化抛出以下错误;系统.OutOfMemoryException。我试
给定代码: dynamic foo = new ExpandoObject(); foo.Bar = "something"; string json = Newtonsoft.Json.JsonCo
好吧,我不明白为什么 JsonConvert.SerializeObject序列化 DateTime对象不同于 JsonSerializer.Serialize。 鉴于类(class) public
我正在使用 jQuery,特别是这个函数 $("#postStatus").serializeObject(); 它在 Chrome 和 Safari 中工作得非常好,但是当我在 Firefox 中执
我正在使用 Entity Framework 和数据库优先方法。我想用来自数据库的数据填充饼图。图表将显示在主页中,因此我在 HomeController 中创建了一个名为 FillChart 的方法
我正在尝试使用 Newtonsoft 的解析器重新创建以下 JavaScript 代码: var nav = { container: $('.ux-navigation-control'), man
我是一名优秀的程序员,十分优秀!