3

尝试使用 FSharp.Data.Json 库解析一个简单的 json 字符串,但遇到以下错误。我正在使用 F# 2.0 交互式。关于如何解决错误的任何想法

JsonValue.Parse(@"{""id"": ""117sds""}");;
System.MissingMethodException:找不到方法:'!! 0 Microsoft.FSharp.Collections.SeqModule.ExactlyOne(System.Collections.Generic.IEnumerable 1 文化) 在 FSharp.Data.Json.JsonValue.Parse(字符串文本,FSharpOption`1 文化) 在 C:\Tomas\Projects\FSharp.Data\src\Library\Json.fs:line 215 at .$FSI_0063.main@()1<!!0>)'.
at FSharp.Data.Json.JsonParser..ctor(String jsonText, FSharpOption


4

3 回答 3

5

正如 Jack 所指出的,F# 数据库实际上只适用于 F# 3.0。如果您可以更新 F# 版本,它将起作用并且您将获得其他好处(如类型提供程序)。

如果您无法升级,那么您可能只需将带有 JSON 解析器和运行时的文件复制到您的项目并更改一些内容以支持 F# 2.0(许可证允许这样做)。您需要的文件是Json.fs

我认为我们不想支持 2.0 版本(到目前为止),但如果修复很容易,请提交包含更改的拉取请求,我们可以合并它以使其更容易对其他人。

于 2013-06-01T01:09:01.950 回答
4

Seq.exactlyOne是一种仅在 F# 3.0 中可用的方法。不幸的是,在 F# 2.0 中使用 FSharp.Data 库并不容易。

于 2013-05-31T22:38:16.180 回答
0

从版本 1.1.6 开始,运行时组件(Json 解析器、Csv 解析器和 Http 实用程序)不再使用 FSharp.Core 4.0.0.0(F# 2.0 版本)中不存在的任何方法,因此您将能够使用 FSharp .Data 与 F# 2.0 如果您不使用类型提供程序

于 2013-07-01T13:40:36.880 回答