perl: wie man eine JSON-Struktur auf etwas anderes als "root" -Schlüsselattribute sortiert

8

Perl: Wie kann ich eine komplexe Struktur mit JSON :: PP sortieren?

Aus der JSON-Dokumentation:

  

Da die Sortierroutine in der   JSON :: PP-Bereich, die angegebene Subroutine   Name und die speziellen Variablen $ a, $ b   wird 'JSON :: PP ::' beginnen.

Hier ist mein Versuch, scheint nicht zu funktionieren

%Vor%

Ich möchte nach Schlüssel sortieren, dann das Attribut column_def für den Attributschlüssel unter "column_def", d. h. Dichte, Tiefe_in_m, mag_sus :

%Vor%     
knb 20.08.2010, 14:55
quelle

1 Antwort

14

Ich bin mir nicht sicher, ob ich verstehe, wie die JSON-Ausgabe sortiert werden soll - abgesehen von der Sortierung nach dem Hash-Schlüssel. Wenn das alles ist, was Sie wollen, übergeben Sie einfach die Methode canonical ein echtes Argument.

%Vor%

Wenn Sie die Methode sort_by verwenden, ist es nicht sinnvoll, $_ im Block sort zu verwenden: was würde es darstellen? Aus der Dokumentation ist nicht ersichtlich, welche Argumente der sort_by Code erhalten wird. Verwenden Sie Data::Dumper wie folgt:

%Vor%

Sie können folgern, dass sort_by wie folgt funktioniert: (1) es erhält zwei Argumente, das JSON::PP -Objekt und die Hash-Referenz, mit der gerade gearbeitet wird; und (2) die Variablen $JSON::PP::a und $JSON::PP::b enthalten die Hash-Schlüssel, die verglichen werden. Beachten Sie jedoch, dass sich der Hash-Verweis auf die JSON-Ausgabe bezieht, da sie aus den Blattknoten nach oben erstellt wird. Es bezieht sich nicht auf Ihre ursprüngliche Datenstruktur. Dies würde die Aufgabe, einen Komparator zu schreiben, etwas kniffliger machen. Viel Glück.

%Vor%     
FMc 20.08.2010, 16:14
quelle

Tags und Links