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

时间:2013-05-31 21:26:38

标签: f# f#-data missingmethodexception

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

  

JsonValue.Parse(@“{”“id”“:”“117sds”“}”);;
  System.MissingMethodException:找不到方法:'!! 0 Microsoft.FSharp.Collections.SeqModule.ExactlyOne(System.Collections.Generic.IEnumerable 1<!!0>)'.
at FSharp.Data.Json.JsonParser..ctor(String jsonText, FSharpOption
1 culture)
     at FSharp.Data.Json.JsonValue.Parse(String text,FSharpOption`1 culture)在C:\ Tomas \ Projects \ FSharp.Data \ src \ Library \ Json.fs:第215行
     at。$ FSI_0063.main @()

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:0)

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

,请使用带有F#2.0的FSharp.Data