Нужен парсер JSON в TXT?

Помогите, пожалуйста, специалисты. С наскоку не получается самому справиться.

Есть адрес с данными в формате JSON: hostname:8082/erlyvideo/api/streams


Данные в таком виде:
{"streams":[{"client_count":0,"created_at":1333358546,"host":"default","last_dts":1376,"last_dts_at":1333358548,"name":"live1","registrator":true,"ts_delay":959,"type":"live","url":"live1","totalDatarate":[49,48,48],"videoKeyframeFrequency":[53]}]}



Нужен скрипт (желательно на баше), который выдал бы содержимое значения «client_count».
  • Вопрос задан
  • 3987 просмотров
Решения вопроса 1
@S1ashka
дайте я свою граблю вставлю
<?php
$string = implode('', file('http://hostname:8082/erlyvideo/api/streams'));
$array=json_decode($string);
echo $array['client_count'];
?>


вроде ничего не напутал. ну а как эти грабли запустить из консоли — разберетесь =))
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
DemiurgeOrion
@DemiurgeOrion
Посмотрите в сторону вот этого github.com/micha/jsawk

Тогда «на баше» ваша задача будет решаться таким образом:

curl 'hostname:8082/erlyvideo/api/streams' | jsawk -a 'return this.streams[0].client_count'
Ответ написан
Комментировать
jov
@jov
wget -O - someurl | tr "{},[]" "\n" | grep client_count | cut -d: -f 2 
Прошу прощения, в первом посте допустил опечатку, да к тому же хабрапарсер…
Ответ написан
Комментировать
@ashum Автор вопроса
Это и смотрю. Спасибо за ".streams[0].", в этом месте был затык. Теперь еще один момент — ответ выводится в виде [0]. Как убрать квадратные скобки?
Ответ написан
DemiurgeOrion
@DemiurgeOrion
По поводу отсекания лишнего:

curl 'hostname:8082/erlyvideo/api/streams' | jsawk 'return this.streams[0].client_count' | grep -Po --regexp="\d+"
Ответ написан
taliban
@taliban
php программист
А если просто вот так сделать: /«client_count»:(\d+?),/?
Ответ написан
Комментировать
jov
@jov
wget -O — someurl | | tr "{},[]" "\n" | grep client_count | cut -d: -f 2
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы