我正在尝试在我的F#应用程序中构建一个树(通过一个有区别的联合类型)来代表我的数据。我研究了网络上可用的内容,我发现了JavaScriptSerializer和DataContractJsonSerializer之类的内容。问题是,我并没有真正将数据序列化为特定对象。
这是我受歧视的联盟:
type ParameterTree =
| End
| Node of string * Dictionary<string, Parameter> * ParameterTree
我基本上希望能够从流中读入并使用我从流中获取的数据填充ParameterTree(包括适当的父/子关系)。我被困在从哪里开始。如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分:3)
我认为最好的选择是使用一些更轻量级的库,它只是在某些.NET字典中为您提供解析后的键/值对,然后将数据转换为一个很好的F#区分联合。
Json.NET library有一个JObject.Parse
方法,似乎正是这样做的。以下是来自其网站的C#示例:
JObject o = JObject.Parse(json);
string name = (string)o["Name"];
JArray sizes = (JArray)o["Sizes"];
string smallest = (string)sizes[0];
将JObject
和JArray
结构转换为您的联合类型应该不会太困难。