J'ai un fichier JSON comme celui-ci (c'est une partie de l'ensemble du fichier JSON):
{
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",
},
},
],
}
Ceci a été décodé par le module JSON, en utilisant:
use Data::Dumper;
use JSON;
open($fh, "<", "hola.txt" );
$json_text = <$fh>;
$perl = decode_json($json_text);
print Dumper($perl);
Maintenant je sais que $perl
a un hash. Je souhaite donc imprimer le id
du fichier JSON en utilisant print $perl{"id"};
. Cependant, il n’imprime rien. Je ne sais pas pourquoi.
Réponses:
5 pour la réponse № 1J'ai trouvé la réponse en ajoutant use strict
à mon code. Il a jeté l'erreur suivante:
Global symbol "%perl" requires explicit package name at json.pl line 12.
La variable $perl
est un scalaire, pas un hash! Bien sûr ... Je n’avais pas pensé à ça. Je ne peux donc pas accéder à l’écriture de hachage $perl{"id"}
. La bonne façon est $perl->{id}
.