【问题标题】:Parsing JSON Using F# (not Serialization)使用 F# 解析 JSON(不是序列化)
【发布时间】:2011-06-16 01:55:20
【问题描述】:

我正在尝试在我的 F# 应用程序中构建一棵树(通过可区分的联合类型)来一般地表示我的数据。我研究了网络上可用的内容,发现了 JavaScriptSerializerDataContractJsonSerializer 之类的东西。问题是,我并没有真正将数据序列化为特定对象。

这是我的歧视联盟:

type ParameterTree =
    | End
    | Node of string * Dictionary<string, Parameter> * ParameterTree

我基本上希望能够从流中读取数据并使用从流中获取的数据填充 ParameterTree(包括适当的父/子关系)。我被困在从哪里开始。如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

    标签: json parsing f#


    【解决方案1】:

    我认为最好的选择是使用一些更轻量级的库,它只是为您提供一些 .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];
    

    JObjectJArray 结构转换为您的联合类型应该不会太难。

    【讨论】:

    • 嗨@Tomas - 我很欣赏你的回答(已经接受),但是,我遇到了一个小问题。我正在创建的阅读器有些通用 - 问题是由用户定义的。有没有办法使用您的方法遍历各种属性和对象(一般枚举它们)?我似乎找不到办法做到这一点。 (我事先不知道这些字段是什么——我只知道它将是一个树结构)。
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2015-07-28
    相关资源
    最近更新 更多