Thread JSON ausgabe mit Perl verarbeiten (5 answers)
Opened by Haselnuss992 at 2019-04-11 11:06

haj
 2019-04-11 12:17
#189953 #189953
User since
2015-01-07
528 Artikel
BenutzerIn

user image
"Standards sind was feines. Jeder sollte seinen eigenen haben." - nun, bei JSON ist der Wunsch in Erfüllung gegangen.

Nun, ganz so schlimm ist es glücklicherweise nicht. JSON erlaubt als obersten Level entweder ein "Object" oder ein "Array" (und seit RFC7493 auch "einfache Werte", aber das spielt hier keine Rolle).

Kann es sein, dass Dein letztes Beispiel nicht ganz richtig wiedergegeben ist? $VAR1 = { { %HASH1 }, { %HASH2 } } ist eine seltsame Konstruktion, in der der "stringifizierte" Wert von %HASH1, also so etwas wie "HASH(0x56440b2b5420)" als Key für die Referenz auf %HASH2 benutzt wird.

Sieht es vielleicht wie folgt aus (hier wurde nur ein geschweiftes durch ein eckiges Klammerpaar ersetzt)?
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$VAR1 = [
{
'name' => 'ABC',
'self' => 'https://123',
'isAssigneeTypeValid' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'id' => '123456789'
},
{
'name' => 'BBB',
'self' => 'https://11223',
'id' => '456789',
'isAssigneeTypeValid' => $VAR1->[0]{'isAssigneeTypeValid'}
},
];


In dem Fall reicht eine Untersuchung des Typs von $VAR1 aus:

Code (perl): (dl )
1
2
3
4
5
my $ref = JSON->new->utf8->decode($json);
my @components = ref $ref eq 'HASH' ? @{$ref->{components}} : @$ref;
for my $zeile( @components} ){
   print"$zeile->{name}\n";
}

View full thread JSON ausgabe mit Perl verarbeiten