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. вы увидите два статических метода, а также все вложенные типы (хотя в этом примере есть только один тип записи).

Другие вопросы по тегам