JSON 配列として保存されているファイルからデータを読み込む必要があります。基本的に、データはノードのラベルと葉の値を持つ二分木を表し、線は次のように定型化されます。
[ラベル1,[ラベル2,[ラベル3,w],x],[ラベル4,y,z]]
すべての枝に任意のレベルの深さがあります。最終的にはこれをツリー構造に変換しようとしていますが、最初のステップはそれを読み込むことです。
次の C# コードは機能します (System.Web.Extensions.dll を使用)。
var jss = new JavaScriptSerializer();
foreach (string line in System.IO.File.ReadAllLines(filename))
{
var data = jss.Deserialize<object[]>(line);
}
「作品」とは、上記の例では data.[1] を意味します。再びオブジェクトの配列です。F# への直接移植は
let data =
let jss = new JavaScriptSerializer()
System.IO.File.ReadAllLines(filename)
|> Seq.map (fun line -> jss.Deserialize<obj[]>(line))
ただし、これを例に適用すると、データが得られます[1]。オブジェクトの配列ではなく、オブジェクトであること。
逆シリアル化を次のように置き換えることを検討しました
|> Seq.map (fun line -> jss.Deserialize<seq<obj[]>(line))
しかし、(私の例では) label1 は文字列であり、(明らかに) System.Object[] に変換できないため、それは機能しません。また、C# コードを静的クラスにラップしてから、このクラスを使用して F# のデータを読み込もうとしましたが、それもうまくいきません。外部の JSON パーサーを使用できることはわかっていますが、JavaScriptSerializer を使用すると C# で機能するため、私の頑固さが始まり、F# でもこの方法でこれを行いたいと考えています。助言がありますか?