2009-11-17 6 views
1

J'ai une chaîne JSON comme ceComment accéder à un membre d'une classe qui se trouve dans un autre objet de JSON en utilisant PHP

$test='{"var1":null,"var3":null,"status":{"code":150,"message":"blah blah"}}'; 

Je veux accéder au code d'état dans la fonction. c'est ce que j'ai essayé:

$responseObj=jsonService->decode($test);//this converts the string into an Object 

echo $responseObj->status->code; 

maintenant ce isnt travail. Quelqu'un peut me diriger dans la bonne direction. Je pense que

$responseObj->status->code 

est la syntaxe incorrecte à utiliser. Quelle est la bonne syntaxe. J'utilise PHP 5.1.6, ceci n'a pas la fonction intégrée de json_decode. Donc, j'utilise une classe de tiers pour convertir. J'utilise la classe suivante tierce partie

+0

Quelle est l'erreur ? – Ryall

+1

vous êtes sûr qu'il renvoie un objet? pas un tableau associatif? essayé '$ responseObj ['status'] ['code']' encore? – Lukman

Répondre

2

Vous devez donner la json_decode() de PHP essayer:

$test='{"var1":null,"var3":null,"status":{"code":150,"message":"blah blah"}}'; 
$responseObj = json_decode($test); 
echo $responseObj->status->code; 

Pour Services_JSON Class POIRE (Documentation):

// create a new instance of Services_JSON 
$jsonService = new Services_JSON(); 

$test='{"var1":null,"var3":null,"status":{"code":150,"message":"blah blah"}}'; 
$jsonService->decode($test); 
echo $responseObj->status->code; 
+0

@ blockhead, @ kelix, @ crem0r: json_decode est une fonction relativement nouvelle. Il n'est pas disponible sur PHP 5.1.6, il faut donc utiliser une classe tierce pour le décodage et l'encodage JSON. – Saeros

+0

Eh bien pouvez-vous nous dire la bibliothèque que vous utilisez et les erreurs qui surviennent? Votre syntaxe est maintenant correcte à partir de ce que je peux voir donc c'est probablement quelque chose d'interne. – Ryall

+1

J'ai édité la question pour inclure le nom du paquet et d'autres détails au sujet de la classe. – Saeros

2

Je ne sais pas ce que vous êtes jsonService fait, mais cela a fonctionné pour moi:

$json = '{"var1":null,"var3":null,"status":{"code":150,"message":"blah blah"}}'; 

$result = json_decode($json); 

echo $result->status->code; 
3

Vous pouvez utiliser json_decode() pour cette tâche. En outre, votre chaîne d'entrée devrait avoir des citations:

$test='{"var1":null,"var3":null,"status":{"code":150,"message":"blah blah"}}'; 

$responseObj = json_decode($test); 

echo $responseObj->status->code; 
Questions connexes