F # DataContractJsonSerializer StackOverflowException - PullRequest
4 голосов
/ 28 апреля 2010
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 Ответ

5 голосов
/ 28 апреля 2010

Вы не должны пытаться сериализовать список F # таким способом. Преобразуйте его в массив с List.toArray.

(я ожидаю, что сериализаторы DataContract видят списки как вложенные структуры данных 'first' / 'rest', что означает 50000-ю глубину дерева Json / Xml, а это не то, что вам нужно.)

...