MB: JSON Daten verarbeiten mit Perl

Tag miteinander,

kann mir jemand vielleicht behilflich sein, komme echt nicht weiter. Versuche seit ein einhalb Tagen irgendwie JSON Daten zu decodieren und anzuzeigen. Danach etwas hinzufügen. Nur sollte ich erstmal hinkriegen das die Daten dekodiert werden....

Benutze dazu die Bibliothek "Perl::XS"

Hier ein kleiner JSON Ausschnitt:

{  
 "definition": "rotation_data",  
 "saved" : 1,  
 "items":  
 [  
  {  
   "definition": "Page 1",  
   "evalthat": "Hallo <b>Fett<\/b> bist du"  
  },  
  
  {  
   "definition": "Bild 2",  
   "evalthat": "Zweiter <b>Text<\/b>"  
  },  
  
  {  
   "definition": "Page2",  
   "evalthat": "wsd"  
  }  
 ]  
}  

und hier der Perl Code denn ich bis jetzt habe:

use JSON::XS;  
  
$json = new JSON::XS;  
$json = $json->utf8 ([$enable]);  
$json = $json->pretty ([$enable]);  
  
my $jsondata;  
  
open(DATA, "</var/www/html/infotainment2/stockwerke/1s_show/rotation_data.json") || die $!;  
 while(<DATA>)  
 { $jsondata = $jsondata . $_; chomp($jsondata); }  
close DATA;  
  
  
$perl_scalar = decode_json $jsondata;

Er dekodiert mir auch etwas nur gibt er mir dann nen "HASH" zurück mit dem ich nachher nichts mehr anfangen kann. Kann mir jemand da behilflich sein und dabei helfen das ganze richtig zu dekodieren, Daten ausgeben, etwas hinzufügen und wieder enkodieren. Das wäre echt super.

Hier noch die Dokumentation zu JSON::XS: http://forum.de.selfhtml.org/cgi-bin/fo_post

Grüsse MB

  1. $perl_scalar = decode_json $jsondata;[/code]

    Er dekodiert mir auch etwas nur gibt er mir dann nen "HASH" zurück mit dem ich nachher nichts mehr anfangen kann.

    Hast du dir den Hash mal genauer angeschaut?

    use Data::Dumper;  
    print Dumper $perl_scalar;  
    
    

    Struppi.

    1. $perl_scalar = decode_json $jsondata;[/code]

      Er dekodiert mir auch etwas nur gibt er mir dann nen "HASH" zurück mit dem ich nachher nichts mehr anfangen kann.

      Hast du dir den Hash mal genauer angeschaut?

      use Data::Dumper;

      print Dumper $perl_scalar;

      
      >   
      > Struppi.  
        
      Gibt folgendes aus:  
      $VAR1 = undef;  
        
      Soll heissen er dekodiert wohl was, nur was....
      
      1. Gibt folgendes aus:
        $VAR1 = undef;

        Soll heissen er dekodiert wohl was, nur was....

        Nein, das heißt es wird nichts dekodiert, allerdings stimmt dann irgednwas mit dieser ersten Festellung nicht.

        Er dekodiert mir auch etwas nur gibt er mir dann nen "HASH" zurück ...

        Struppi.

        1. Gibt folgendes aus:
          $VAR1 = undef;

          Soll heissen er dekodiert wohl was, nur was....

          Nein, das heißt es wird nichts dekodiert, allerdings stimmt dann irgednwas mit dieser ersten Festellung nicht.

          Er dekodiert mir auch etwas nur gibt er mir dann nen "HASH" zurück ...

          Struppi.

          Also habs jetzt hingebracht er dekodiert mir das Zeug richtig:

          $VAR1 = {  
                    'saved' => 1,  
                    'items' => [  
                                 {  
                                   'evalthat' => 'Hallo <b>Fett</b> bist du',  
                                   'definition' => 'Page 1'  
                                 },  
                                 {  
                                   'evalthat' => 'Zweiter <b>Text</b>',  
                                   'definition' => 'Bild 2'  
                                 },  
                                 {  
                                   'evalthat' => 'wsd',  
                                   'definition' => 'Page2'  
                                 }  
                               ],  
                    'definition' => 'rotation_data'  
                  };
          

          Ist das noch ein Array? und wenn es ein Array ist wie kann es in einer Variable abgespeichert sein und wie kann man die verschiedenen elementen ansprechen?

          1. Ist das noch ein Array? und wenn es ein Array ist wie kann es in einer Variable abgespeichert sein und wie kann man die verschiedenen elementen ansprechen?

            Nein, das ist kein Array, das ist ein Hash, wie komplexe Datenstrukturen in Perl angesprochen werden, kannst du der Doku entnehmen http://perldoc.perl.org/perldsc.html

            Struppi.