Пособие или как считать данные с json

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
adzam
Сообщения: 607
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Пособие или как считать данные с json

Сообщение adzam » Вс мар 23, 2014 3:27 pm

Сначало устанавливаем программу Open Hardware Monitor.
Скачать можно везде и на русском тоже.
Запускаем программу и получаем монитор нашего компьютера , примерно такое (это мой монитор)
0.JPG
0.JPG (71.31 КБ) 8711 просмотров
Далее выбираем параметр который хотим вытянуть, допустим это скорость вентилятора
CPU Fan #2
1.JPG
1.JPG (72.25 КБ) 8711 просмотров
Далее создаем скрипт с таким содержанием:

$ch = curl_init('http://192.168.1.35:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$ohm = curl_exec($ch);
$json = json_decode($ohm);

//----------------------- Вытягиваем данные

$Fan = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0] -> {'Value'};
$cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};

//----------------------- Просматриваем данные

echo "<br \>";
echo "скорость вентилятора";echo "&nbsp&nbsp";print_r("$Fan");
echo "<br \>";
echo "Тип процессора";echo "&nbsp&nbsp";print_r("$cpu_tip");

//----------------------- Присваеваем данные

setGlobal('serverFAN2.value', $Fan);
setGlobal('serverCPUtip.value', $cpu_tip);


Теперь обьясню как собираются выражения

$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0] -> {'Value'};
$cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};

Давайте разобьем эту строку на части

$Fan = - это название переменной которую мы создаем
$json -> - это входим в json
{'Children'}[0] -> - это входим в свой компьютер, смотри по фото монитора данных(у меня это в HOME-E78C34B9F1)
6.JPG
6.JPG (49.87 КБ) 8711 просмотров
Второй гилдрен
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] - это входим в :
2.JPG
2.JPG (59.54 КБ) 8711 просмотров
В зависимости куда нужно зайти ту цифру и ставите после {'Children'}[ 0или1или2или3или4или5 ]
В нашем случае стоит 0 - значит входим в материнскую плату, а если допустим поставить 4 то попадем в винчестер (смотри по картинке моего монитора)


Теперь после этого выражения
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0]
мы попадаем сюда в Winbond W83627EHF
7.JPG
7.JPG (73.86 КБ) 8711 просмотров
Дальше добавляем еще один {'Children'} и попадаем $Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] сюда:
8.JPG
8.JPG (73.54 КБ) 8711 просмотров
здесь нам нужно поставить 2 , если хотим попасть в Fan
Дальше при добавлении попадаем в :
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0]
1.JPG
1.JPG (72.59 КБ) 8711 просмотров
Далее дописываем переменную value или maх или min, в зависимости от необходимости
9.JPG
9.JPG (74.21 КБ) 8711 просмотров
Если нужно вытянуть название блока а не его переменную то пишем {'Text'};
Например пишем это $cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};
и получаем это
10.JPG
10.JPG (61.43 КБ) 8711 просмотров
Короче получилось так:
11.JPG
11.JPG (76.21 КБ) 8711 просмотров
Буду рад если кому поможет а то сам потерял день на это понимание.
За это сообщение автора adzam поблагодарили (всего 2):
Amarok (Вт авг 26, 2014 6:45 am) • ErmolenkoM (Сб ноя 01, 2014 11:23 am)
Рейтинг: 2.33%
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Пособие или как считать данные с json

Сообщение ErmolenkoM » Пт апр 04, 2014 9:48 am

Спасибо! Помогло. Как раз с json разбираюсь :-)
aka msh555
Cubian на Cubietruck, Connect
NikSaver
Сообщения: 13
Зарегистрирован: Пн май 26, 2014 10:14 am
Откуда: Бобруйск
Благодарил (а): 0
Поблагодарили: 0

Re: Пособие или как считать данные с json

Сообщение NikSaver » Вс июн 15, 2014 1:50 pm

Спасибо большое за нужную информацию)
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Пособие или как считать данные с json

Сообщение ErmolenkoM » Сб ноя 01, 2014 11:37 am

Помогите, туплю я что-то:
Есть JSON:

Код: Выделить всё

$content="{"summary":[{"date":"2014-10-16","points":1909.2,"steps":14490,"calories":2179.5632,"activityCalories":496.4,"distance":6.179},{"date":"2014-10-17","points":2249.6,"steps":14514,"calories":2286.5632,"activityCalories":584.9,"distance":6.7564},{"date":"2014-10-18","points":676.4,"steps":6592,"calories":1792.2632,"activityCalories":175.9,"distance":2.4256}]}"
пытаюсь обратится:

Код: Выделить всё

$data=(array)json_decode($content);
echo $data->summary[0]->date;
// или так
echo $data['summary '][0]['date'];
Результат пустой. Что я делаю не так?

Ответ :-) (ну может кому поможет...)

Код: Выделить всё

//вместо
$data=(array)json_decode($content);
//надо
$data=json_decode($content);
А теперь объясните мне что происходит? Чего я не понимаю?
aka msh555
Cubian на Cubietruck, Connect
sega6549
Сообщения: 535
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: Пособие или как считать данные с json

Сообщение sega6549 » Пн мар 28, 2016 3:29 pm

помогите пожалуйста, вытягиваю данные, в свойствах прописывается все хорошо, но не могу построить графики, нужно либо чтоб данные без символов вытягивались типа %, либо пните меня в ветку форума где описано как данные с % и градусами прикрутить к графику, весь форум уже второй день лопачу(((
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
sega6549
Сообщения: 535
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: Пособие или как считать данные с json

Сообщение sega6549 » Пн мар 28, 2016 3:43 pm

все, разобрался сам
СпойлерПоказать

Код: Выделить всё

$ch = curl_init('http://192.168.1.2:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$ohm = curl_exec($ch);
$json = json_decode($ohm);

//----------------------- Вытягиваем данные

$CpuLoad = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[2] ->{'Children'}[0] -> {'Value'};
$CpuTemp = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[1] ->{'Children'}[0] -> {'Value'};
$Memory = $json -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};

//----------------------- Просматриваем данные

echo "<br \>";
echo "Загрузка процессора";echo "&nbsp&nbsp";print_r("$CpuLoad");
echo "<br \>";
echo "температура процессора";echo "&nbsp&nbsp";print_r("$CpuTemp");
echo "<br \>";
echo "Занято оперативки";echo "&nbsp&nbsp";print_r("$Memory");

//----------------------- Присваеваем данные

setGlobal('ThisComputer.CpuLoad',intval($CpuLoad));
setGlobal('ThisComputer.CpuTemp',intval($CpuTemp));
setGlobal('ThisComputer.Memory',intval($Memory));
 
]
нужно добавить intval($CpuLoad)
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
Ответить