gpt4 book ai didi

perl - 如何对哈希值进行 JSON 编码?

转载 作者:行者123 更新时间:2023-12-02 03:20:56 28 4
gpt4 key购买 nike

我想在服务器端迭代哈希,并使用 JSON 按排序顺序将其发送到客户端。

我的问题是:

当我处于 foreach 循环中并拥有键和复杂值(请参阅底部的哈希值)时,如何将其插入到 JSON 字符串中?

这是我的做法

use JSON;
my $json = JSON->new;
$json = $json->utf8;

...

# use numeric sort
foreach my $key (sort {$a <=> $b} (keys %act)) {

# somehow insert $key and contents of $act{$key} into JSON here

}

# my $json_string;
# my $data = $json->encode(%h);
# $json_string = to_json($data);

# # return JSON string
# print $cgi->header(-type => "application/json", -charset => "utf-8");
# print $json_string;

打印 Dumper\%act 看起来像这样

$VAR1 = {
'127' => {
'owners' => [
'm'
],
'users' => [
'hh',
'do'
],
'date_end' => '24/05-2011',
'title' => 'dfg',
'date_begin' => '24/05-2011',
'members_groups' => [],
'type' => 'individuel'
},
'276' => {
...

最佳答案

JSON 内置排序还不够吗?

参见:http://metacpan.org/pod/JSON#sort_by

仅 JSON:PP 支持排序(Perl,不支持 XS - AFAIK)

所以:

use JSON::PP;
use warnings;
use strict;

my $data = {
'aaa' => {
a => 1,
b => 2,
},
'bbb' => {
x => 3,
},
'a2' => {
z => 4,
}
};

my $json = JSON::PP->new->allow_nonref;
#my $js = $json->encode($data); #without sort
my $js = $json->sort_by(sub { $JSON::PP::a cmp $JSON::PP::b })->encode($data);
print "$js\n";

关于perl - 如何对哈希值进行 JSON 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6252242/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com