對於JMP 14,我一直在鍛煉新的 HTTP請求在JSL中找到的對象。 我遇到了這個API,在這裡找到: http://api.citybik.es/v2/ 。
此Web服務可用於在全球範圍內查找City Bike數據(和可用性)。 它只有兩個端點 http://api.citybik.es/v2/networks 和 http://api.citybik.es/v2/networks/[id ] 所以這是一個非常簡單的Rest API。 但關鍵是如何配置HTPP Request對像以發送到網站,然後如何處理該信息。 (處理信息可以像你想要的那樣處理)
request = New HTTP Request(URL("http://api.citybik.es/v2/networks"), Method("Get"));
json = request << Send();
這是從第一個端點獲取數據所需的全部內容。json是從API返回的數據。 由於我知道這個Web服務,我知道我應該返回的數據是Character,它是JSON我只是檢查:
!IsEmpty(json)
但是,您可以檢查是否成功,並返回mimetype:
request << Is Successful
request << Get Mime Type == "application/json"
從腳本創建的初始JMP數據表是City Bikes Network表。
它是從第一個端點返回的json數據創建的。 有[至少]兩種方法可以處理返回的數據。 首先是:
JSON to Data Table(json)
這將嘗試從數據創建JMP數據表。 對於“矩形”或“tabluar”數據,這非常有效(並且速度很快)。 但是,並非所有的Web服務都返回表格數據(City Bikes不是這樣)。這帶來了第二種處理返回數據的方法:
Parse JSON(json)
這將創建一個JSL關聯數組。 這意味著您不必在JSL中自己解析JSON,但是您需要知道數據的結構。 那就是你需要知道它是否是一個鍵=> 值對或一把鑰匙=> 值對。 這並不像看起來那麼難,因為您可以捕獲原始json輸出,如:
write(json);
在日誌中並將其粘貼到您最喜歡的json格式化程序中。(我在Chrome中使用JSON編輯器在線應用程序)。這意味著這樣的事情:
{
"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"
},
...
...
}
可以這樣:
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
...
...
換句話說,當你看到一個 [...] 在JSON Editor Online中,您正在處理JSL數組。 當你看到一個 {...} ,您正在處理JSL關聯數組。
我想對腳本做的另一個注意事項是我使用:
Set Property("Event Handler", ...
所以我可以深入到下一個端點。
當我點擊公司專欄中的超鏈接時,我使用了 COMPANY_ID 在同一行中使用url構建新的HTTP請求:
"http://api.citybik.es/v2/networks/" || thisTable:company_id[iRow]
這使我可以獲得有關City Bike公司的更多詳細信息,並使用與以前相同的過程創建另一個JMP數據表。
我使用Graph Builder創建了幾個示例表腳本,然後將它們嵌入到我的JSL中。
有很多很多Rest API,所以請隨意嘗試一下。
請享用,
布萊恩布恩