Войти

Показать полную графическую версию : Получения значения из JSON-страницы посредством VBScript


The_Immortal
09-02-2018, 19:50
Приветствую!

Господа, пытаюсь извлечь нужную информацию вот из этой JSON-страницы (https://api.crypto-bridge.org/api/v1/ticker).

Нашел готовый пример (https://www.example-code.com/vbscript/json_array_load_and_parse.asp), как это делается с помощью сторонней библиотеки (Chilkat ActiveX) и попытался адаптировать его для себя:
Dim fso, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set outFile = fso.CreateTextFile("output.txt", True)

' A JSON array must be loaded using JsonArray:
set jsonArray = CreateObject("Chilkat_9_5_0.JsonArray")

success = jsonArray.Load("https://api.crypto-bridge.org/api/v1/ticker")

If (success <> 1) Then
outFile.WriteLine(jsonArray.LastErrorText) '!!! "Unable to get array at index 0."
WScript.Quit
End If

' Examine the values:
i = 0
Do While i < jsonArray.Size
' jsonObj is a Chilkat_9_5_0.JsonObject
Set jsonObj = jsonArray.ObjectAt(i)
outFile.WriteLine(i & ": " & jsonObj.StringOf("last"))

i = i + 1
Loop

outFile.Close



Однако в выходном файле (output.txt) я вижу оишбку:
ChilkatLog:
Load:
ChilkatVersion: 9.5.0.71
Unable to get array at index 0.
--Load
--ChilkatLog
Полагаю проблема в том, что я неправильно загружаю указанную страницу. Честно говоря, она вообще какая-то странная: при попытке обратиться к ней через IE тот воспринимает её как файл ticker.json, а вот Mozilla показывает в виде JSON-строки... =/

Подскажите, пожалуйста, как с таким работать?

Спасибо!

Patroklos
09-02-2018, 22:42
Пожалуй самый простой способ работать с json это jq. Но пока не ясно что именно тебе нужно.
Опиши задачу в развёрнутом виде. Это файл с котировками виртуальных валют?
Какая именно информация нужна? В каком виде?
Простейшее решение: Скачай файл по своей ссылке.
Скачай эту прогу: http://mitec.cz/jsonv.html
Открой файл программой.
ПодумОй хорошенько надо ли оно тебе :)

Serguei Kouzmine
10-02-2018, 23:59
пош ?

```
$url = 'https://api.crypto-bridge.org/api/v1/ticker'
$tmp_filename = "${env:TEMP}/a.json"
$client = new-object System.Net.WebClient
$client.DownloadFile($url, $tmp_filename )
$data = get-content $tmp_filename | convertFrom-json
$data | select-object -first 10 | select-object -expandproperty last



```
дает
```

0.00039087
0.00000000
0.00013000
```

c jq синтакс будет
``
type "${env:TEMP}/a.json" | jq-win64.exe .[].last
```

и получится


```
"0.00039087"
"0.00000000"
"0.00013000"
"0.00018000"
"0.00000725"
```

как выбрать часть вектора чисто средствани `jq`, я пока не знаю




© OSzone.net 2001-2012