2013-08-17 4 views
2

Quelqu'un peut-il me dire que comment récupérer l'élément d'URL uniquement à partir du premier enfant de « miniature » .Ici est le JSON:Parsing cette étrange JSON en utilisant PHP

"thumbnail": [ 
     { 
     "height": "49", 
     "url": "http://news.bbcimg.co.uk/media/images/69340000/jpg/_69340597_8hxs1hvy.jpg", 
     "width": "66" 
     }, 
     { 
     "height": "81", 
     "url": "http://news.bbcimg.co.uk/media/images/69340000/jpg/_69340598_8hxs1hvy.jpg", 
     "width": "144" 
     } 
    ] 

S'il vous plaît aider, j'ai tout essayé de stdClass à l'analyse JSON mais rien ne semble fonctionner. Merci.

[EDIT]: JSON ci-dessus est un extrait d'un grand JSON rss feed.I ont réussi à analyser le JSON uptill ce nœud miniature comme suit:

$decoded_json->query->results->item->thumbnail 

où decoded_json $ est un objet obtenu après application de la fonction json_decode() à la racine du fichier json.Maintenant, comment procéder après cette partie thumbnail?

+3

'$ var = json_decode (your_json $); echo $ var ['thumbnail'] [0] ['url']; ' –

+0

En fait c'est une partie interne d'un gros fichier json. L'arbre est comme ceci: $ decoded_json-> query-> results-> item- > thumbnail –

+1

@cale_b devrait être '$ var ['thumbnail'] [0] -> url' à moins que vous ne passiez' true' comme second argument, qui lui demande de créer un tableau associatif au lieu de stdClass. –

Répondre

2

utilisation json_decode

$JsonObj = json_decode($JsonString); 
if($JsonObj === NULL) { 
    echo "Malformed JSON string or Recursion limit reached"; 
} 
print $JsonObj[0]->url; 

si le fichier JSON est trop grand, vous pouvez frapper la limite de récursivité. La valeur par défaut est 512 dans 5.3, 128 dans 5.2.3 et 20 dans les versions précédentes. vous pouvez définir la profondeur de récursivité comme troisième argument

json_decode($JsonString,false,1024); 

Le second argument est un booléen, vrai si vous voulez un tableau associatif fait, false (par défaut) si vous voulez plutôt un objet stdClass.

[EDIT]

Pour aller miniature passé vous $decoded_json->query->results->item->thumbnail[0]->url depuis la vignette est un tableau seulement l'accès en tant que tel. Plus que probable que vous voulez faire une boucle sur comme

foreach($decoded_json->query->results->item->thumbnail as $thumbnail) { 
    echo $thumbnail->url; 
} 
+0

Votre pièce éditée contient la solution.Merci beaucoup :) –