Accéder à la clé d'un objet Json

2 réponses
Avatar
Julien Arlandis
Bonsoir,

PHP récupère la chaine de caractères suivante :
{"POST":{"article":{"from":"juju","subject":"PHP","newsgroups":"fr.test","body":"test"}}}

J'écris :
$json = json_decode(file_get_contents("php://input"));

Et mon soucis c'est de récupérer la première clef de mon objet $json,
ici "POST".

Voici la structure de mon objet json :

stdClass Object
(
[POST] => stdClass Object
(
[article] => stdClass Object
(
[from] => juju
[subject] => PHP
[newsgroups] => fr.test
[body] => test
)

)

)

Pour l'instant je m'en sors de la façon suivante (pas très élégante) :

foreach ($json as $cle=>$valeur)
{
$commande = $cle;
break;
}


Une solution plus simple?

2 réponses

Avatar
Stéphane Santon
Bonjour,

Julien Arlandis a écrit :
PHP récupère la chaine de caractères suivante :
{"POST":{"article":{"from":"juju","subject":"PHP","newsgroups":"fr.test","body":"test"}}}


J'écris :
$json = json_decode(file_get_contents("php://input"));



Il faut décoder le JSON avec un résultat sous forme de tableau
associatif, donc paramètre 'assoc' à true.
http://php.net/manual/fr/function.json-decode.php

$json = json_decode(file_get_contents("php://input"), true);

Et mon soucis c'est de récupérer la première clef de mon objet $json, ici
"POST".



Alors
$cles = array_keys( $json);
$commande = $cles[0];

--
Stéphane

Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !

BTS Electrotechnique *** http://enselec.santonum.eu
Avatar
Clément
Bonsoir,

Tout d'abord, sans le 2e argument de json_decode, vous n'aurez pas de
tableau associatif mais un objet...

Il faut plutôt faire
$json = json_decode(file_get_contents("php://input"), true);

Ensuite, pour avoir la 1ère clef d'un tableau, il y a plusieurs
solutions, je miserais sur
reset($json);
$commande = key($json);

Cordialement

Le 18/03/2013 01:00, Julien Arlandis a écrit :
Bonsoir,

PHP récupère la chaine de caractères suivante :
{"POST":{"article":{"from":"juju","subject":"PHP","newsgroups":"fr.test","body":"test"}}}


J'écris :
$json = json_decode(file_get_contents("php://input"));

Et mon soucis c'est de récupérer la première clef de mon objet $json,
ici "POST".

Voici la structure de mon objet json :

stdClass Object
(
[POST] => stdClass Object
(
[article] => stdClass Object
(
[from] => juju
[subject] => PHP
[newsgroups] => fr.test
[body] => test
)

)

)

Pour l'instant je m'en sors de la façon suivante (pas très élégante) :

foreach ($json as $cle=>$valeur)
{
$commande = $cle;
break;
}


Une solution plus simple?