Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1171 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Problème d'imbrication de références et de tableaux de références

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'imbrication de références et de tableaux de références

n°2146673
chevket
Posté le 21-06-2012 à 17:31:08  profilanswer
 

Bonjour,
 
Je rencontre un petit problème de décodage de données au format JSON et suis un peu perdu dans l'arborescence de ces données.
J'arrive à accéder à un premier niveau de données, mais pas à aller plus loin dans l'imbrication.
Pour faire plus simple, j'ai une source de donnée de cette sorte au format JSON :
 

Code :
  1. {racine_0{
  2.    "racine_a":{
  3.       "title":"toto"
  4.    }
  5.    "racine_b":[{
  6.       "id":"1234",
  7.       "type":"blog",
  8.       "data":[{
  9.          "data1":{"id":4567,"name":"toto1"},
  10.          "data2":[{"id":9485,"name":"toto2"},{"id":7463,"name":"toto3"}]
  11.        }]
  12.    }]
  13. }}


 
Avec mon script perl, j'arrive à accéder au contenu sous la racine_b mais non au tableau de références située sous data.
Si $content est la source de donnée JSON:
 

Code :
  1. $json = new JSON;
  2. $json_text = $json->decode($content);
  3. foreach $racine (@{$json_text->{racine_0}->{racine_b}}){
  4.    %hash = ();
  5.    $hash{id} = $racine->{id};
  6.    $hash{type} = $racine->{type};
  7. }


 
Pour aller plus loin dans l'arborescence, je suis un peu perdu pour la déclaration de l'imbrication, d'autant plus que la structure imbrique plusieurs tableaux (par exemple data2).
 
est ce que quelqu'un pourrait m'apporter un peu d'aide  :??:

mood
Publicité
Posté le 21-06-2012 à 17:31:08  profilanswer
 

n°2146704
gilou
Modérateur
Modzilla
Posté le 21-06-2012 à 23:03:15  profilanswer
 

Code :
  1. print $json_text->{racine_0}->{racine_b}->[0]->{data}->[0]->{data1}->{id}, "\n";
  2. print $json_text->{racine_0}->{racine_b}->[0]->{data}->[0]->{data1}->{name}, "\n";
  3. print $json_text->{racine_0}->{racine_b}->[0]->{data}->[0]->{data2}->[0]->{id}, "\n";
  4. print $json_text->{racine_0}->{racine_b}->[0]->{data}->[0]->{data2}->[0]->{name}, "\n";
  5. print $json_text->{racine_0}->{racine_b}->[0]->{data}->[0]->{data2}->[1]->{id}, "\n";
  6. print $json_text->{racine_0}->{racine_b}->[0]->{data}->[0]->{data2}->[1]->{name}, "\n";


donne

4567
toto1
9485
toto2
7463
toto3


Bon, après, tu peux essayer de faire plus générique, en testant si ce que tu as est une référence, et sur quoi:
ref($toto) renvoie la chaine vide si $toto est un scalaire et pas une référence, 'SCALAR' si c'est une référence à un scalaire, 'ARRAY' si c'est une référence à une liste, et 'HASH' si c'est une référence à un hash (et 'CODE' si c'est une référence à une subroutine, 'GLOB' à une variable globale, mais ça ne devrais pas intervenir).
A+,


Message édité par gilou le 22-06-2012 à 02:45:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2146844
chevket
Posté le 22-06-2012 à 17:25:56  profilanswer
 

OK, merci, je comprend mieux la construction de l'accès à la structure !
 
Ca marche bien comme ça !

n°2146857
gilou
Modérateur
Modzilla
Posté le 22-06-2012 à 20:48:49  profilanswer
 

Dans ce genre de situation, si tu sais plus qui est quoi,
 
use Data::Dumper;
...
print Dumper($MaVariableQuiFaitSuer);
 
ça aide bien en général.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Problème d'imbrication de références et de tableaux de références

 

Sujets relatifs
Problème de tri d'enregistrementsProblème de méta données
[Resolu] problème CSS : faire un 100% et soustraire des PXProblème d'accents formulaire
Problème d'espacement avec IE7[Résolu] Problème privilège oracle
problème attributsprobleme reponse a l'excecution d'une commande par code
Problème select Max[BATCH] xcopy problème avec /D sur réseau
Plus de sujets relatifs à : Problème d'imbrication de références et de tableaux de références


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR