Alexander (HH): Perl-Hash nach JSON

Beitrag lesen

Moin Moin!

Das entspricht nicht der Perl-Struktur.
Müsste ich dann innerhalb des normalen Arrays noch ein Hash-Array aufbauen, damit ich das obige Resultat erhalte?

Also sowas wie

while (($id, $author, $title) = $dbh->fetchrow_array()) {
   $hash{$id} = [$authorHash{'author'} => $author, $titleHash{'title'} => $title];
}

  
Was spricht dagegen, es auszuprobieren?  
  
Das JSON-Modul liefert (für einfache Scalare, Arrays und Hashes) eine der Perl-Datenstruktur identische JSON-Struktur aus. Wenn Du ein Array von Arrays in JSON haben willst, mußt Du das auch in Perl haben. Wenn Du ein Array von Hashes ("Objekte" in JSON-Benennung) haben willst, dann mußt Du das auch in Perl haben. Und so weiter.  
  
JSON nutzt praktischerweise bis auf den Doppelpunkt die selben Interpunktionszeichen, die Du auch in Perl nutzen kannst. Wenn Du in JSON also  
  
~~~javascript
  
{  
  "key1" : [  
    {  
      "subkey1" : "value1",  
      "subkey2" : "value2"  
    }  
  ],  
  "key2" : [  
    {  
      "subkey3" : "value3",  
      "subkey4" : "value4"  
    }  
  ]  
}  

haben willst, brauchst Du in Perl

  
{  
  "key1" => [  
    {  
      "subkey1" => "value1",  
      "subkey2" => "value2"  
    }  
  ],  
  "key2" => [  
    {  
      "subkey3" => "value3",  
      "subkey4" => "value4"  
    }  
  ]  
}  

Wobei ich nicht verstehe, wozu Du die Hashes noch einmal in Arrays verpacken willst. Wenn Du für jeden Key auf der obersten Ebene nur einen Hash hast, brauchst Du kein Array drum herum zu packen:

  
{  
  "key1" => {  
    "subkey1" => "value1",  
    "subkey2" => "value2"  
  },  
  "key2" => {  
    "subkey3" => "value3",  
    "subkey4" => "value4"  
  }  
}  

Du willst ganz dringend perldsc lesen und Data::Dumper benutzen lernen.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".