我正在观看一个关于“为什么应该使用F#”的九频道视频,惊讶于从维基百科获取数据的简易程度。例如,他展示了以下列出《Doctor Who》不同出现次数的代码...
[<Literal>]
let url = @"https://en.wikipedia.org/wiki/Doctor_Who"
type DoctorWhoData = HtmlProvider<url>
let data = DoctorWhoData.GetSample()
let app = data.Tables.``Changes of appearance``.Rows
当他输入时,最后一行开启了Intellisense,这消除了查找数据的猜测。
我最近有一个从谷歌地图API提取一些数据的要求。例如,以下URL提取英国邮政编码SW1A 1AA(白金汉宫,如果有兴趣!)的数据...
http://maps.google.com/maps/api/geocode/json?address=sw1a+1aa+uk
鉴于数据只是Json格式,我认为使用F#从中提取信息应该同样容易。然而,当我尝试获取纬度和经度时遇到了困难。我开始使用以下代码...
type GoogleData = JsonProvider<"http://maps.google.com/maps/api/geocode/json?address=sw1a+1aa+uk">
...但是在提取数据时卡住了。JSON包含一个条目的数组。其中包含一个 geometry
节点,该节点包含一个 location
节点,保存了两个值。以伪代码形式,我希望这样做...
let lat = GoogleData.GetSample().[0].geometry.location.lat
然而,这并没有起作用。我试过不使用GetSample(),但是没有取得更多进展。智能感知向我展示了一些与Json似乎不匹配的东西...
![在此输入图片描述](https://istack.dev59.com/mqTr3.webp)
let (lat, lng) = ???
,而不是两次调用整个行? - Avrohom Yisroellet ll2tp (ll: GoogleData.Northeast) = (ll.Lat, ll.Lng)
然后使用let (lat, lng) = honley.Results.[0].Geometry.Location |> ll2tp
进行调用。 - DaveShaw