Json Type Provider: использование типа в качестве аргумента в функции
У меня есть документ JSON, как это:
{"index": 1, "addressOne": "1506 WAKE FOREST RD", "addressTwo": "RALEIGH NC 27604-1331", "addressThree": "", "asotedValue": "$34 848", "id": "c0e931de-68b8-452e-8365-66d3a4a93483", "_rid": "pmVVALZMZAEBAAAAAAAAAA==", "_ts": 1423934277, "_self": "DBS /pmVVAA==/colls/pmVVALZMZAE=/ документы /pmVVALZMZAEBAAAAAAAAAA==/", "_etag": "\"0000c100-0000-0000-0000-54df83450000\"", "_attachments": "attachments/" }
Затем я загружаю его через провайдера типа следующим образом:
type HouseValuation = JsonProvider<"../data/HouseValuationSample.json">
Когда я пытаюсь использовать HouseValuation как часть аргумента, он возвращается к Object:
Что я делаю неправильно?
заранее спасибо
1 ответ
Тип HouseValuation
является корневым типом, который используется только для размещения Parse
а также Load
методы, но это не тип, который представляет фактический проанализированный документ. Если вы посмотрите на тип Load
или же Parse
вы увидите что-то вроде этого:
Load : string -> JsonProvider<"...">.Root
Таким образом, тип фактического проанализированного документа является вложенным типом Root
под основным предоставленным типом HouseValuation
, Функция должна принять HouseValuation.Root
в качестве аргумента вместо этого:
type HouseValuation = JsonProvider<" ... ">
let createSchoolAssignmentSearchCriteria(houseValuation:HouseValuation.Root) =
houseValuation.AddressOne
Когда вы печатаете HouseValuation.
вы увидите два статических метода, а также все вложенные типы (хотя в этом примере есть только один тип записи).