[RESOLU] Extraire valeur depuis requete JSON

Petit nouveau ! | 4 Messages

27 oct. 2020, 20:02

Bonjour,
Cela fait 2 jours que je cherche partout mais en vain.
Je fais les requetes suivantes:
$json = file_get_contents($jsonurl);
$vardumptrue=var_dump(json_decode($json, true));

qui me donnent:
{
"production": [{
"type": "inverters",
"activeCount": 8,
"readingTime": 1603799333,
"wNow": 1915,
"whLifetime": 45892
}, {
"type": "eim",
"activeCount": 1,
"measurementType": "production",
"readingTime": 1603799879,
"wNow": 1395.507,
"whLifetime": 45055.262,
"varhLeadLifetime": 0.0,
"varhLagLifetime": 24137.911,
"vahLifetime": 61672.773,
"rmsCurrent": 5.774,
"rmsVoltage": 237.421,
"reactPwr": 127.299,
"apprntPwr": 1398.462,
"pwrFactor": 1.0,
"whToday": 4053.262,
"whLastSevenDays": 41620.262,
"vahToday": 5125.773,
"varhLeadToday": 0.0,
"varhLagToday": 1638.911
}],
"consumption": [{
"type": "eim",
"activeCount": 1,
"measurementType": "total-consumption",
"readingTime": 1603799879,
"wNow": 876.327,
"whLifetime": 124647.712,
"varhLeadLifetime": 33145.171,
"varhLagLifetime": 27242.976,
"vahLifetime": 128557.927,
"rmsCurrent": 3.45,
"rmsVoltage": 237.539,
"reactPwr": -165.617,
"apprntPwr": 819.437,
"pwrFactor": 1.0,
"whToday": 5487.712,
"whLastSevenDays": 103903.712,
"vahToday": 6469.927,
"varhLeadToday": 2076.171,
"varhLagToday": 1656.976
}, {
"type": "eim",
"activeCount": 1,
"measurementType": "net-consumption",
"readingTime": 1603799879,
"wNow": -519.18,
"whLifetime": 95552.117,
"varhLeadLifetime": 33145.171,
"varhLagLifetime": 3105.064,
"vahLifetime": 128557.927,
"rmsCurrent": 2.324,
"rmsVoltage": 237.657,
"reactPwr": -38.318,
"apprntPwr": 580.475,
"pwrFactor": -0.85,
"whToday": 0,
"whLastSevenDays": 0,
"vahToday": 0,
"varhLeadToday": 0,
"varhLagToday": 0
}],
"storage": [{
"type": "acb",
"activeCount": 0,
"readingTime": 0,
"wNow": 0,
"whNow": 0,
"state": "idle"
}]
}

Je n'arrive pas à extraire les valeurs wNow et whLifetime des 3 sections différentes?

Pourriez-vous s'il vous plait me guider sur mla syntaxe à utiliser?
Merci

Mammouth du PHP | 1701 Messages

28 oct. 2020, 09:20

il te faut boucler sur les 3 tableaux

un truc du genre
foreach($json->production as $key => $value) {
if ($key == 'wNow') {...}
}
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 4 Messages

28 oct. 2020, 11:08

Merci spols pour ta remarque.
Je n'arrive pas à trouver la syntaxe exacte pour interroger le bon tableau, c'est à dire production[xx].
Visuellement les données json sont comme la capture suivante
Image
Merci

Mammouth du PHP | 1701 Messages

28 oct. 2020, 11:56

$json->production[O]->wNow
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 4 Messages

28 oct. 2020, 12:41

Merci Spols,
La syntaxe eacte et qui fonctionne chez moi est:
$parsed_json->{'production'}[0]->{'readingTime'};
Merci pour ton aide