Как конвертировать простой хеш в json в Perl? - PullRequest
29 голосов
/ 11 декабря 2011

Я использую следующий код для кодирования простого хэша

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>

Ответы [ 2 ]

56 голосов
/ 11 декабря 2011

В вашем коде, похоже, отсутствуют некоторые существенные куски, поэтому давайте добавим недостающие биты (я сделаю некоторые предположения здесь) и исправим ситуацию по ходу работы.

Добавить недостающий шаблон.

#!/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 (передавая хеш-код):

my $json = encode_json \%rec_hash;

Вывести результат:

print $json;

И это работает, как я ожидал, без ошибок.

4 голосов
/ 11 декабря 2011

Попробуйте %rec_hash = ... вместо. @ обозначает список / массив, а % обозначает хеш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...