在perl中创建一个json字符串

Blu*_*eni 4 perl json

我试图在perl中创建一个json字符串,输出如下内容:

{"d":{"success":false, "error":"key is required"}}
Run Code Online (Sandbox Code Playgroud)

我已经想出了如何在没有使用这个例子的"d"的情况下做到这一点:

my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
my $json = encode_json \%rec_hash;
print "$json\n";
Run Code Online (Sandbox Code Playgroud)

但不确定我想要用额外的水平做什么

小智 18

你需要的是一个哈希引用:

use strict;
use warnings;
use JSON;

my $json = JSON->new;

my $data_to_json = {d=>{success=>JSON::false,error=>"key is required"}};

print $json->encode($data_to_json) . "\n";
Run Code Online (Sandbox Code Playgroud)

输出是:

{"d":{"success":false,"error":"key is required"}}
Run Code Online (Sandbox Code Playgroud)

注意使用JSON::false来表示JSON模块将正确转换false为JSON值的值.

  • @BluGeni - 没问题.如果您还没有,我会考虑查看`perldoc perlref`(在上面的答案中链接).Perl最令人沮丧的特性是数据结构会自动变平,除非你使用引用(有点像指针,除了对于嵌套数据结构和通过引用传递的变通方法没有用). (2认同)