Что нового

Как получить значения из JSON?

NickIF

Новичок
Сообщения
3
Репутация
0
Версия AutoIt: 3.5.4

Описание: Браузер по ссилке h**p://127.0.0.1:42000/getstat выдает что-то такое:
Код:
{"method":"getstat", "error":null, "start_time":1497724957, "current_server":"my.super.com:42000", "available_servers":1, "server_status":2,"result":[{"gpid":0, "name":"Ge1", "gp_status":2, "speed":450, "start_time":1497731297},{"gpid":1, "name":"Ge2", "gp_status":2, "speed":448, "start_time":1497731297},{"gpid":2, "name":"Ge3", "gp_status":2, "speed":446, "start_time":1497731297}]}

как мне с этого получить все значения "name" или "speed":448 и присвоить их переменным? для дальнейшего анализа и использования в скрипте.

Примечания: Если можно полный код (так как я только учусь) Спасибо!
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
если совсем по-простому, то так

Код:
#include <Array.au3>

$String='{"method":"getstat", "error":null, "start_time":1497724957, "current_server":"my.super.com:42000", "available_servers":1, "server_status":2,"result":[{"gpid":0, "name":"Ge1", "gp_status":2, "speed":450, "start_time":1497731297},{"gpid":1, "name":"Ge2", "gp_status":2, "speed":448, "start_time":1497731297},{"gpid":2, "name":"Ge3", "gp_status":2, "speed":446, "start_time":1497731297}]}'

$Result=StringRegExp($String, '"name":"(.*?)",', 3)
_ArrayDisplay($Result)

$Result=StringRegExp($String, '"speed":(.*?),', 3)
_ArrayDisplay($Result)
 
Автор
N

NickIF

Новичок
Сообщения
3
Репутация
0
Vovsla сказал(а):
если совсем по-простому, то так

Так я смогу осуществить поиск в строке. А как же строку получить которая направляется в браузер по адресу "h**p://127.0.0.1:42000/getstat"? Она специфической программой каждую секунду формируется другая.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
NickIF

Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 
Автор
N

NickIF

Новичок
Сообщения
3
Репутация
0
я понял уже, нужно просто:
$sting = InetRead("h**p://127.0.0.1:42000/getstat")
только как теперь json в string перевести?

теперь понял, надо вот так:
$String = BinaryToString(InetRead("h**p://127.0.0.1:42000/getstat"),4)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
NickIF

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Верх