F#DataContractJsonSerializer StackOverflowException

时间:2010-04-28 17:33:58

标签: f# datacontractserializer stack-overflow netdatacontractserializer

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。确切地说:

  

未处理的类型异常   'System.StackOverflowException'   发生在FSharp.Core.dll

任何建议?

1 个答案:

答案 0 :(得分:5)

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

(我希望DataContract序列化程序将列表视为嵌套的'first'/'rest'数据结构,这意味着JSON / Xml的树深度为50000,这不是您想要的。)