Json Type Provider:在函数中使用type作为参数

时间:2015-02-14 17:53:41

标签: f# f#-data

我有一个像这样的json文档:

  

{       “指数”:1,       “addressOne”:“1506 WAKE FOREST RD”,       “addressTwo”:“RALEIGH NC 27604-1331”,       “addressThree”:“”,       “assessValue”:“34,848美元”,       “id”:“c0e931de-68b8-452e-8365-66d3a4a93483”,       “_rid”:“pmVVALZMZAEBAAAAAAAAAA ==”,       “_ts”:1423934277,       “_self”:“dbs / pmVVAA == / colls / pmVVALZMZAE = / docs / pmVVALZMZAEBAAAAAAAAAA == /”,       “_etag”:“\”0000c100-0000-0000-0000-54df83450000 \“”,       “_attachments”:“附件/”}

然后我通过类型提供程序加载它:

type HouseValuation = JsonProvider<"../data/HouseValuationSample.json">

当我尝试将HouseValuation用作参数的一部分时,它会被强制转换为Object:

enter image description here

我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:10)

类型HouseValuation是一种根类型,仅用于托管ParseLoad方法,但它不是表示实际解析文档的类型。如果您查看LoadParse的类型,您会看到以下内容:

Load : string -> JsonProvider<"...">.Root

因此,实际解析文档的类型是主提供类型Root下的嵌套类型HouseValuation。然后该函数应该以{{1​​}}作为参数:

HouseValuation.Root

当您键入type HouseValuation = JsonProvider<" ... "> let createSchoolAssignmentSearchCriteria(houseValuation:HouseValuation.Root) = houseValuation.AddressOne 时,您将看到两个静态方法以及所有嵌套类型(尽管在此示例中,只有一种记录类型)。

相关问题