How does JSON encode a hash?

I would like to iterate over the hash on the server side and send it to the client in sorted order using JSON.

My question is:

When I am in my foreach -loop and have a key and complex value (see how my hash looks below), how do I insert it into a JSON string?

This is how i do it

 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; 

print Dumper \%act looks like this

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

And is JSON sorting not enough?

see: http://metacpan.org/pod/JSON#sort_by

Sorting is only supported using JSON: PP (Perl, not XS - AFAIK)

So:

 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"; 
+9
source

Old post, but anyone looking for json output sorting.

 #!/bin/perl use warnings; use strict; use Sort::Naturally; use JSON; my $data = { 'a10' => { b => 1, a => 2, }, 'bbb' => { x => 3, }, 'a2' => { z => 4, } }; my $json = new JSON; $json->sort_by(sub { ncmp($JSON::PP::a, $JSON::PP::b) }); my $json_text = $json->pretty->encode ($data); print $json_text; { "a2" : { "z" : 4 }, "a10" : { "a" : 2, "b" : 1 }, "bbb" : { "x" : 3 } } 
+1
source

Source: https://habr.com/ru/post/889867/


All Articles