Thread Perl Hash für ein JSON Array sortieren (24 answers)
Opened by cbxk1xg at 2010-10-15 20:03

cbxk1xg
 2010-10-15 20:03
#141942 #141942
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo!
Ich versuche grade aus einem Hash ein JSON Array zu erstellen. Da klappt auch ganz gut. Vor der Übergabe an das JSON Modul ziehe ich mich mir noch mit einer Regex bestimmte Key/Value Paare aus einem anderen Hash. Das klappt auch. Nun will ich aber meinen "finalen" Hash sortiert an das JSON Modul übergeben. Ich würde es gerne alphanumerisch sortieren und das dann noch mit case-ignore. Bei Arrays benutze ich für sowas eine "schwartzsche Transformation". Ich weiss nun aber leider nicht, wie man das mit einem Hash macht, da ein Hash ja per Definition unsortiert ist.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;

my %UDIoutput = ( 'versionNo' => $VAR{'versionNo'},
'sitetitle' => $VAR{'sitetitle'},
'author' => $VAR{'PIDauthor'},
);

for my $key (%CONFIG){
$UDIoutput{$key} = $CONFIG{$key} if $key =~m/UserVar\d{2}Name/g;
}


use JSON;
my $json_text = to_json(\%UDIoutput);
print $json_text;


Momentan kommt da sowas raus.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"UserVar05Name": "",
"UserVar12Name": "",
"UserVar07Name": "",
"UserVar09Name": "",
"UserVar10Name": "",
"UserVar18Name": "",
"UserVar20Name": "",
"UserVar15Name": "",
"UserVar14Name": "",
"UserVar06Name": "",
"UserVar16Name": "",
"UserVar03Name": "",
"UserVar13Name": "",
"UserVar08Name": "",
"UserVar02Name": "",
"versionNo": "1.8.3",
"UserVar11Name": "",
"sitetitle": "Wunschjob gesucht",
"author": "admin",
"UserVar01Name": "",
"UserVar04Name": "",
"UserVar19Name": "",
"UserVar17Name": "",
}

View full thread Perl Hash für ein JSON Array sortieren