Für JMP 14 habe ich das Neue trainiert HTTP-Anfrage Objekt in JSL gefunden. Ich bin auf diese API gestoßen, hier gegründet: http://api.citybik.es/v2/ .
Dieser Web-Service kann verwendet werden, um City Bike-Daten (und Verfügbarkeit) weltweit zu lokalisieren. Es hat nur zwei Endpunkte http://api.citybik.es/v2/networks und http://api.citybik.es/v2/networks/[id ] es ist also eine ziemlich einfache Rest-API, mit der man arbeiten kann. Der Schlüssel ist jedoch, wie das HTPP-Anforderungsobjekt für das Senden an die Website konfiguriert wird und wie diese Informationen verarbeitet werden. (Die Verarbeitung der Informationen kann so involviert sein, wie Sie möchten.)
request = New HTTP Request(URL("http://api.citybik.es/v2/networks"), Method("Get"));
json = request << Send();
Dies ist alles, was benötigt wird, um Daten vom ersten Endpunkt zu erhalten. Json sind die Daten, die von der API zurückgegeben werden. Da ich diesen Web-Service kenne, weiß ich, dass die Daten, die ich zurückbekommen sollte, Character sind, und es ist JSON.
!IsEmpty(json)
Sie können jedoch den Erfolg und den Mimetyp wie folgt überprüfen:
request << Is Successful
request << Get Mime Type == "application/json"
Die aus dem Skript erstellte ursprüngliche JMP-Datentabelle ist die City Bikes Network-Tabelle.
Es wird aus den Json-Daten erstellt, die vom ersten Endpunkt zurückgegeben werden. Es gibt zwei Möglichkeiten, die zurückgegebenen Daten zu verarbeiten. Das erste ist:
JSON to Data Table(json)
Dadurch wird versucht, aus den Daten eine JMP-Datentabelle zu erstellen. Bei "rechteckigen" oder "tabluar" -Daten funktioniert dies sehr gut (und zwar schnell). Allerdings liefern nicht alle Webservices tabellarische Daten (City Bikes ist eines, das dies nicht tut). Dies bringt uns zur zweiten Art der Verarbeitung der zurückgegebenen Daten:
Parse JSON(json)
Dadurch wird ein assoziiertes JSL-Array erstellt. Das bedeutet, dass Sie den JSON nicht selbst in JSL parsen müssen, Sie müssen jedoch wissen, wie die Daten strukturiert sind. Das heißt, Sie müssen wissen, ob es ein Schlüssel ist => Wert Paar oder ein Schlüssel => Werte Paar. Dies ist nicht so schwer wie es scheint, da Sie die rohen Json-Ausgaben wie folgt aufnehmen können:
write(json);
In das Protokoll und fügen Sie es in Ihren bevorzugten Json-Formatierer ein. (Ich benutze die JSON Editor Online-App in Chrome). Das bedeutet so etwas:
{
"networks": [
{
"company": [
"Bike U Sp. z o.o."
],
"href": "/v2/networks/bbbike",
"id": "bbbike",
"location": {
"city": "Bielsko-Bia\u0142a",
"country": "PL",
"latitude": 49.8225,
"longitude": 19.044444
},
"name": "BBBike"
},
...
...
}
Kann so aussehen:
object {1}
networks {560}
0 {5}
company [1]
0 : Bike U Sp. z o.o
href: /v2/networks/bbbike
id: bbbike
location {4}
city: Bielsko-Biaia
country: PL
latitude: 49.8225
longitude: 19.044444
name: BBBike
...
...
Mit anderen Worten, wenn Sie ein sehen [...] In JSON Editor Online haben Sie es mit einem JSL-Array zu tun. Wenn Sie ein sehen {...} , Sie haben es mit einem JSL Associative Array zu tun.
Eine weitere Anmerkung, die ich über das Skript machen möchte, ist, dass ich Folgendes benutze:
Set Property("Event Handler", ...
So kann ich zum nächsten Endpunkt gehen.
Wenn ich auf den Hyperlink in der Unternehmensspalte klicke, verwende ich das company_id in derselben Zeile, um eine neue HTTP-Anfrage mit der URL zu erstellen:
"http://api.citybik.es/v2/networks/" || thisTable:company_id[iRow]
Dadurch kann ich detailliertere Informationen über das Unternehmen City Bike erhalten und eine weitere JMP-Datentabelle mit demselben Verfahren wie zuvor erstellen.
Ich habe einige Beispieltabellenskripts erstellt, indem ich Graph Builder verwendete und sie dann in meine JSL einbettete.
Es gibt viele, viele weitere Rest-APIs, also probieren Sie es einfach.
Genießen,
Bryan Boone