2014-07-10 1 views
0

J'ai une variable HTTP_Request2_Response qui, lorsque je fais écho à l'aide $response->getBody() me donne ceci:Utiliser le contenu de réponse HTTP_Request

{"results":["element1","element2","element3"],"id":"elementID"} 

Est-il possible d'obtenir chaque élément comme $respons["id"]? Est-il possible de convertir ces résultats en un objet JSON?

Répondre

2

Certainement. json_decode() est la fonction que vous cherchez:

<?php 

$str = "{\"results\":[\"element1\",\"element2\",\"element3\"],\"id\":\"elementID\"}"; 

$obj = json_decode($str); 

print_r($obj); 

?> 

Produit:

stdClass Object 
(
    [results] => Array 
     (
      [0] => element1 
      [1] => element2 
      [2] => element3 
     ) 

    [id] => elementID 
) 

Comme il se retourne comme un objet, vous pouvez accéder aux éléments en tant que membres du public. En d'autres termes: $obj->id vous donnera 'elementID'.

Ou comme un tableau:

$array = json_decode($str, true); 

print_r($array); 

Produit:

Array 
(
    [results] => Array 
     (
      [0] => element1 
      [1] => element2 
      [2] => element3 
     ) 

    [id] => elementID 
) 

echo $array['id']; donne elementID.

+0

Merci beaucoup, mais que faire si le nombre d'éléments (élément1, élément2, ...) n'est pas connu et que son nombre peut être différent. Y a-t-il un moyen plus flexible de les obtenir? – m0j1

+0

Cela dépend de ce que vous essayez de faire. Vous devriez le gérer comme vous le feriez pour n'importe quel autre tableau de longueur inconnue. –

+0

Je ne veux pas modifier manuellement la chaîne et ensuite obtenir son fichier json, je veux définir un modèle par exemple définir que j'ai des valeurs pour "résultats" et "id" et ensuite obtenir leurs valeurs avec quelque chose comme des résultats [0 ] – m0j1

Questions connexes