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が発生しています。正確には:

タイプ'System.StackOverflowException'の未処理の例外がFSharp.Core.dllで発生しました

何かアドバイス?

4

1 に答える 1

5

この方法でF#リストをシリアル化しようとしないでください。を使用して配列に変換しList.toArrayます。

(DataContractシリアライザーは、リストをネストされた「最初の」/「残りの」データ構造として表示することを期待しています。これは、Json / Xmlの50000ツリーの深さを意味します。これは、必要なものではありません。)

于 2010-04-28T17:50:52.863 に答える