Ich habe eine JSON-Datei wie diese (sie ist ein Teil der gesamten JSON-Datei):
{
id => "mgp1310",
samples => [
{
envPackage => {
data => {
diss_carb_dioxide => {
aliases => ["sediment_diss_carb_dioxide"],
definition => "concentration of dissolved carbon dioxide",
mixs => 1,
required => 0,
type => "text",
unit => "",
value => "17 mM",
},
},
id => "mge64559",
},
},
],
}
Dies wurde von Modul JSON dekodiert, wobei Folgendes verwendet wurde:
use Data::Dumper;
use JSON;
open($fh, "<", "hola.txt" );
$json_text = <$fh>;
$perl = decode_json($json_text);
print Dumper($perl);
Jetzt weiß ich das $perl
hat einen Hash. Also möchte ich das drucken id
der JSON-Datei mit print $perl{"id"};
. Es druckt jedoch nichts, ich weiß nicht warum.
Antworten:
5 für die Antwort № 1Ich habe die Antwort gefunden, indem ich hinzugefügt habe use strict
bei meinem Code. Es hat den folgenden Fehler ausgelöst:
Global symbol "%perl" requires explicit package name at json.pl line 12.
Die Variable $perl
ist ein Skalar, kein Hash !. Natürlich ... Ich habe nicht darüber nachgedacht. Ich kann also nicht auf das Hash-Schreiben zugreifen $perl{"id"}
. Der richtige Weg ist $perl->{id}
.