F# DataContractJsonSerializer 堆栈溢出异常

4
dataElementsList : TypesAndData.DataElement list

这是一个包含50,000条记录的列表(实际上可能更多,但我们从小处开始)。我正在尝试将其序列化为JSON文件:

let ser = Json.DataContractJsonSerializer(typeof<TypesAndData.DataElement list>) 
use ofs = File.OpenWrite(fileName)
let result = ser.WriteObject(ofs, dataElementsList)

我遇到了臭名昭著的StackOverflowException异常。具体来说:

在FSharp.Core.dll中发生了未处理的类型为“System.StackOverflowException”的异常

有什么建议吗?
1个回答

5

不应该尝试以这种方式序列化F#列表。使用List.toArray将其转换为数组。

(我预计DataContract序列化程序将列表视为嵌套的“first”/“rest”数据结构,这意味着Json/Xml的50000个树深度,这不是您想要的。)


成功了,我为了好玩只保留了列表中的10个元素,看起来它似乎在保留列表的“内部结构”——如果我仔细想想的话这是有道理的;谢谢。 - akaphenom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接