Comment convertir un simple hash en JSON en Perl?

j'utilise le code suivant pour encoder un simple hash

use JSON;

my $name = "test";
my $type = "A";
my $data = "1.1.1.1";
my $ttl  = 84600;

@rec_hash = ('name'=>$name, 'type'=>$type,'data'=>$data,'ttl'=>$ttl);

mais j'obtiens l'erreur suivante:

hash- or arrayref expected <not a simple scalar, use allow_nonref to allow this>
26
demandé sur Quentin 2011-12-11 16:25:18

2 réponses

votre code semble manquer de morceaux significatifs, donc ajoutons les morceaux manquants (je vais faire quelques hypothèses ici) et corrigeons les choses au fur et à mesure.

ajouter le boilerplate manquant.

#!/usr/bin/perl

use strict;
use warnings;

use JSON;

my $name = "test";
my $type = "A";
my $data = "1.1.1.1";
my $ttl  = 84600;

Faire le hachage hachage et pas un tableau et n'oubliez pas de localiser l'endroit: my %

my %rec_hash = ('name'=>$name, 'type'=>$type,'data'=>$data,'ttl'=>$ttl);

en fait, utilisez le encode_json méthode (en passant un hashref):

my $json = encode_json \%rec_hash;

Sortie le résultat:

print $json;

et cela fonctionne comme je m'y attendais sans erreurs.

52
répondu Quentin 2011-12-11 12:33:43

%rec_hash = ... à la place. @ indique une liste / tableau, alors que % indique un hachage.

4
répondu Marius Kjeldahl 2011-12-11 12:30:55