Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Получения значения из JSON-страницы посредством VBScript (http://forum.oszone.net/showthread.php?t=333081)

The_Immortal 09-02-2018 19:50 2797044

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

Господа, пытаюсь извлечь нужную информацию вот из этой JSON-страницы.

Нашел готовый пример, как это делается с помощью сторонней библиотеки (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 2797077

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

Serguei Kouzmine 10-02-2018 23:59 2797262

пош ?

```
$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`, я пока не знаю


Время: 23:00.

Время: 23:00.
© OSzone.net 2001-