Доступ к объекту в json из php - PullRequest
0 голосов
/ 28 января 2019

Прошло много времени с тех пор, как я это сделал, и мне явно не хватает какой-то важной части.Я надеюсь, что вы все сможете меня поправить.

У меня есть файл json, который я декодирую, и я надеялся, что получить доступ к данным за определенную дату было просто.Вот что я сделал до сих пор:

$solardata = file_get_contents('solar.json');
$solarjson = json_decode("$solardata");
$production = $solarjson->{'2019-01-24 11:00:00'};
echo "$production";

Переменная $ production всегда пуста.Для справки файл solar.json начинается так:

{"powerDetails":{"timeUnit":"QUARTER_OF_AN_HOUR","unit":"W","meters":[{"type":"Production","values":[{"date":"2019-01-24 11:00:00","value":273.5632},{"date":"2019-01-24 11:15:00","value":405.8625},{"date":"2019-01-24 11:30:00","value":558.6771},

var_dump ($ solarjson) начинается так:

object(stdClass)#321 (1) { ["powerDetails"]=> object(stdClass)#3 (3) { ["timeUnit"]=> string(18) "QUARTER_OF_AN_HOUR" ["unit"]=> string(1) "W" ["meters"]=> array(1) { [0]=> object(stdClass)#4 (2) { ["type"]=> string(10) "Production" ["values"]=> array(316) { [0]=> object(stdClass)#5 (2) { ["date"]=> string(19) "2019-01-24 11:00:00" ["value"]=> float(273.5632) } [1]=> object(stdClass)#6 (2) { ["date"]=> string(19) "2019-01-24 11:15:00" ["value"]=> float(405.8625) } [2]=> object(stdClass)#7 (2) { ["date"]=> string(19) "2019-01-24 11:30:00" ["value"]=> float(558.6771) }

В журнале ошибок сервера указано:

Undefined property: stdClass::$2019-01-24 11:00:00 in /home/......

Являются ли объекты, к которым я пытаюсь получить доступ, внутри массива, который мне все еще нужно пройти?Мне снилось, что я могу избежать всего этого простым запросом объекта, поскольку я ищу конкретные данные, но, как я уже сказал, я довольно ржавый.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 января 2019
$solardata = file_get_contents('solar.json');
$solarjson = json_decode("$solardata");
$production = $solarjson['powerDetails']['meters'][0]['values']['date'];
echo "$production";`

this OUTPUT '2019-01-24 11:00:00';

Вы также можете изменить содержимое:

$solardata = file_get_contents('solar.json');
$solarjson = json_decode("$solardata");
$solarjson['powerDetails']['meters'][0]['values']['date'] = date(y-m-d);
echo $solarjson['powerDetails']['meters'][0]['values']['date'];`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...