问题描述
|
我正在尝试在F#应用程序中构建树(通过区分的联合类型)来一般地表示我的数据。我研究了网络上的可用内容,发现了诸如JavaScriptSerializer和DataContractJsonSerializer之类的东西。问题是,我并没有真正将数据序列化为特定的对象。
这是我受歧视的工会:
type ParameterTree =
| End
| Node of string * Dictionary<string,Parameter> * ParameterTree
我基本上希望能够从流中读取并用从流中获取的数据(包括适当的父/子关系)填充ParameterTree。我被困在哪里开始。如果有人能指出正确的方向,我将不胜感激。
解决方法
我认为最好的选择是使用一些更轻量级的库,该库只为您提供一些.NET词典中已解析的键/值对,然后将数据转换为漂亮的F#区分的并集。
Json.NET库有一个
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
结构转换为并集类型应该并不难。