Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 使用FSharp.Data.Json.JsonValue.Parse时如何解决MissingMethodException_F#_F# Data_Missingmethodexception - Fatal编程技术网

F# 使用FSharp.Data.Json.JsonValue.Parse时如何解决MissingMethodException

F# 使用FSharp.Data.Json.JsonValue.Parse时如何解决MissingMethodException,f#,f#-data,missingmethodexception,F#,F# Data,Missingmethodexception,试图用FSharp.Data.json库解析一个简单的json字符串时,我遇到了以下错误。我使用的是F#2.0交互式。有没有关于如何着手解决错误的想法 Parse(@“{”id“:”117sds“}”) System.MissingMethodException:未找到方法:'!!0 Microsoft.FSharp.Collections.SeqModule.ExactlyOne(System.Collections.Generic.IEnumerable1)。 在FSharp.Data.Js

试图用FSharp.Data.json库解析一个简单的json字符串时,我遇到了以下错误。我使用的是F#2.0交互式。有没有关于如何着手解决错误的想法

Parse(@“{”id“:”117sds“}”)
System.MissingMethodException:未找到方法:'!!0 Microsoft.FSharp.Collections.SeqModule.ExactlyOne(System.Collections.Generic.IEnumerable
1)。
在FSharp.Data.Json.JsonParser..ctor(字符串jsonText,FSharpOption
1区域性)
在C:\Tomas\Projects\FSharp.Data\src\Library\Json.fs中的FSharp.Data.Json.JsonValue.Parse(字符串文本,FSharpOption`1区域性)处:第215行
地址:$FSI_0063.main@()

是一种仅在F#3.0中可用的方法。不幸的是,在F#2.0中使用FSharp.datalibrary并非易事。

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

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


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

从1.1.6版开始,运行时组件(Json解析器、Csv解析器和Http实用程序)不再使用FSharp.Core 4.0.0中没有的任何方法(F#2.0版),因此,如果不使用类型提供程序,您可以将FSharp.Data与F#2.0一起使用。ExactlyOne位于
Seq
模块中,该模块位于
FSharp.Core.dll
中。您是否检查了F#是否正确安装在运行此功能的位置?MSDN页面似乎暗示着
ExactlyOne
在F#2.0中受支持(支持的F#核心库版本:2.0、4.0、便携式)。这是一个文档错误吗?@JohnPalmer该文档讨论的是.NET Framework版本;不过可能会更清晰一些。您可以看出,
Seq.exactlyOne
函数仅在F#3.0中受支持,因为在页面顶部,
Visual Studio 2012
仅为文本;如果该方法在其他版本中受支持ns,它将是一个允许您从其他版本(例如,
VisualStudio2010
)导航到文档的链接。