如何在Perl中将简单哈希转换为json?

Ste*_*eve 29 perl hash encoding json utf-8

我正在使用以下代码来编码一个简单的哈希

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);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

hash- or arrayref expected <not a simple scalar, use allow_nonref to allow this>
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 58

你的代码似乎缺少一些重要的块,所以让我们添加缺少的位(我将在这里做一些假设)并解决我们的问题.

添加缺少的样板.

#!/usr/bin/perl

use strict;
use warnings;

use JSON;

my $name = "test";
my $type = "A";
my $data = "1.1.1.1";
my $ttl  = 84600;
Run Code Online (Sandbox Code Playgroud)

使哈希成为哈希而不是数组,并且不要忘记将其本地化: my %

my %rec_hash = ('name'=>$name, 'type'=>$type,'data'=>$data,'ttl'=>$ttl);
Run Code Online (Sandbox Code Playgroud)

实际上使用encode_json方法(传递hashref):

my $json = encode_json \%rec_hash;
Run Code Online (Sandbox Code Playgroud)

输出结果:

print $json;
Run Code Online (Sandbox Code Playgroud)

而这正如我所料,没有错误.

  • 非常感谢你指出这些错误.我正在学习Perl而我没有注意到我试图使用数组作为哈希lol Thx再次+1! (3认同)