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% 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.
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:
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.