web-dev-qa-db-fra.com

Comment convertir un hachage simple en json en Perl?

J'utilise le code suivant pour encoder un hachage simple

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>
29
Steve

Votre code semble manquer des morceaux importants, alors ajoutons les bits manquants (je ferai quelques hypothèses ici) et corrigeons les choses au fur et à mesure.

Ajoutez le passe-partout 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;

Faites du hachage un hachage et non un tableau et n'oubliez pas de le localiser: my %

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

Utilisez en fait le encode_json méthode (en lui passant un hashref):

my $json = encode_json \%rec_hash;

Sortez le résultat:

print $json;

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

57
Quentin

Essayez %rec_hash = ... au lieu. @ indique une liste/un tableau, tandis que % indique un hachage.

4
Marius Kjeldahl