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

Posted

技术标签:

【中文标题】如何在 Perl 中将简单的哈希转换为 json?【英文标题】:How to convert a simple hash to json in Perl? 【发布时间】:2012-01-17 19:59:55 【问题描述】:

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

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);

但我收到以下错误:

hash- or arrayref expected <not a simple scalar, use allow_nonref to allow this>

【问题讨论】:

【参考方案1】:

您的代码似乎缺少一些重要的块,所以让我们添加缺少的部分(我将在这里做一些假设)并在我们进行的过程中进行修复。

添加缺少的样板。

#!/usr/bin/perl

use strict;
use warnings;

use JSON;

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

将散列设置为散列而不是数组,不要忘记对其进行本地化:my %

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

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

my $json = encode_json \%rec_hash;

输出结果:

print $json;

这可以正常工作,没有错误。

【讨论】:

非常感谢您指出这些错误。我正在学习 Perl,但我没有注意到我正在尝试将数组用作哈希,哈哈,谢谢 +1! 缺少反斜杠 (\%rec_hash) 是我的问题【参考方案2】:

改用%rec_hash = ...@ 表示列表/数组,% 表示哈希。

【讨论】:

以上是关于如何在 Perl 中将简单的哈希转换为 json?的主要内容,如果未能解决你的问题,请参考以下文章

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

如何在 Perl 中将纪元时间转换为正常时间?

如何在 Perl 中将输入文件转换为 UTF-8 编码?

在 Perl 中将 MySQL 结果作为哈希表返回

如何在 Perl 中将 dd/mm/yyyy 转换为纪元时间?

如何在 Ruby 中将 JSON 转换为 XML?