Страница 1 из 1

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

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

$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 КБ) 8712 просмотров
Второй гилдрен
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] - это входим в :
2.JPG
2.JPG (59.54 КБ) 8712 просмотров
В зависимости куда нужно зайти ту цифру и ставите после {'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 КБ) 8712 просмотров
Дальше добавляем еще один {'Children'} и попадаем $Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] сюда:
8.JPG
8.JPG (73.54 КБ) 8712 просмотров
здесь нам нужно поставить 2 , если хотим попасть в Fan
Дальше при добавлении попадаем в :
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0]
1.JPG
1.JPG (72.59 КБ) 8712 просмотров
Далее дописываем переменную value или maх или min, в зависимости от необходимости
9.JPG
9.JPG (74.21 КБ) 8712 просмотров
Если нужно вытянуть название блока а не его переменную то пишем {'Text'};
Например пишем это $cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};
и получаем это
10.JPG
10.JPG (61.43 КБ) 8712 просмотров
Короче получилось так:
11.JPG
11.JPG (76.21 КБ) 8712 просмотров
Буду рад если кому поможет а то сам потерял день на это понимание.

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

Добавлено: Пт апр 04, 2014 9:48 am
ErmolenkoM
Спасибо! Помогло. Как раз с json разбираюсь :-)

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

Добавлено: Вс июн 15, 2014 1:50 pm
NikSaver
Спасибо большое за нужную информацию)

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

Добавлено: Сб ноя 01, 2014 11:37 am
ErmolenkoM
Помогите, туплю я что-то:
Есть 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);
А теперь объясните мне что происходит? Чего я не понимаю?

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

Добавлено: Пн мар 28, 2016 3:29 pm
sega6549
помогите пожалуйста, вытягиваю данные, в свойствах прописывается все хорошо, но не могу построить графики, нужно либо чтоб данные без символов вытягивались типа %, либо пните меня в ветку форума где описано как данные с % и градусами прикрутить к графику, весь форум уже второй день лопачу(((

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

Добавлено: Пн мар 28, 2016 3:43 pm
sega6549
все, разобрался сам
СпойлерПоказать

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

$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)