22 kwietnia 2020

PowerShell & JSON - pobieranie zagnieżdżonych danych

Na przykładzie danych JSON z Narodowego Banku Polskiego oraz giełdy BitBay przedstawiam przykłady zapytań w skryptach PowerShell.
Dane z giełdy BitBay nie posiadające wewnętrznych struktur np: wartość średnia BTCPLN
       
przykład prostych danych JSON pobranych z BitBay:
{"max":29900,"min":28745,"last":29900,"bid":29899.01,"ask":29900,"vwap":29900,"average":29900,"volume":2537.49419038}

przykładowe rozwiązanie - pobieramy cenę "average":
<# adres API z BitBay #>
   $request_BTC = 'https://bitbay.net/API/Public/BTCPLN/ticker.json'
<# zapytanie #>
   $BTC_object = Invoke-WebRequest $request_BTC | ConvertFrom-Json | Select average
<# wynik typu float w zmiennej $BTC_average #>
   [float]$BTC_average = $BTC_object.average
       
 
Dane z NBP posiadają zagnieżdżone struktury, a ich zawartość można pobrać przy pomocy przykładowego zapytania (aktualna cena skupu dolara amerykańskiego w NBP)
       
przykład zagnieżdżonych danych JSON pobranych z NBP:
{"table":"C","currency":"dolar amerykański","code":"USD","rates":[{"no":"078/C/NBP/2020","effectiveDate":"2020-04-22","bid":4.1246,"ask":4.2080}]}

przykładowe rozwiązanie - pobieramy cenę "bid" będącą częścią struktury "rates":
<# adres API z NBP #>
   $request_USD = 'https://api.nbp.pl/api/exchangerates/rates/C/USD?format=json'
<# zapytanie #>
   $USD_object = Invoke-WebRequest $request_USD | ConvertFrom-Json | Select $_.rates.bid
<# wynik typu float w zmiennej $USD_bid #>
   [float]$USD_bid = $USD_object.rates.bid
       
 
Choć różnica w zapytaniach jest niewielka, zapewne przyda się czytelnikom ta metoda, której odnalezieniu poświęciłem kilka godzin pracy ;-)

Brak komentarzy:

Prześlij komentarz