【发布时间】:2016-08-17 10:02:23
【问题描述】:
我正在从数据库中获取一个对象中的 300k+ 条记录。我正在尝试序列化下面的重物:
List<user> allUsersList = businessProvider.GetAllUsers();
string json = JsonConvert.SerializeObject(allUsersList);
序列化列表时出现以下异常 - allUsersList。
内存不足异常
我正在使用 newtonsoft.json 程序集对其进行反序列化。
【问题讨论】:
-
我将反序列化以在 UI 中显示它。我应该尝试其他数据结构,例如列表或字典吗?
-
为什么选择@GiladGreen?这无关紧要。问题是序列化为字符串时的对象太大。他需要使用流或达到他的阈值等
-
如果 User 类有 User 类型的属性,那么就会有循环,使 Newtonsoft 抛出异常,另外如果列表太大,超过 10,000 个用户也可能抛出此类异常, 能否请您显示用户类的代码
-
如果不关心性能,您可以拆分列表,一个一个序列化,然后使用硬盘驱动器等持久存储进行组合。
-
300k 不仅对于 JSON 来说太多了——对于任何用户来说也太多了。
标签: c# json serialization