NEWS
[gelöst] JSON nach Attribute sortieren
-
Nabend,
morgiges Projekt soll sein ein JSON nach Attribute zu sortieren.
Das JSON hat 2 Attribute und sieht so aus:[ { "text": "Maschine1", "value": "63983" }, { "text": "Knotenpunkt4", "value": "63364" } ]
Der Inhalt sollte ja egal sein und ich hab das Teil mal gekürtzt weil es mehr als 30 {Werte} sind:
Ich würde gerne dieses JSON nach dem Attribute "text" aufsteigend sortieren.
Kann man das per Blockly lösen oder bedarf es da einer JS-Funktion ?
-
-
-
Eingangs eine kleine Korrektur
Json ist nur die textuelle Darstellung eines JavaScript Objektes.
Du hast als Beispiel ein Array of objects.Leider ohne blockly, aber evtl kann jemand daraus ein blockly machen.
An die Funktion wird das Array übergeben und als Schlüssel der Name des Attributs nachdem sortiert werden soll.function sortByKey(array, key) { return array.sort(function(a, b) { var x = a[key]; var y = b[key]; return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); }
Die Funktion müsste mit allen primitiven Datentypen zurechtkommen.
Bei strings wird nur alphanumerisch und nicht lexikalisch sortiert -
Unten ist doch mit JSONATA eine super elegante Lösung gezeigt?
-
@mickym
Ja mit einer zusätzlichen Bibliothek.
Ich bevorzuge meist erstmal cleane Lösungen.
Erst wenn es vom Aufwand keinen Sinn mehr macht, dann hol ich mir eine Bibliothek. Bei npm gibt es Bibliotheken mit 10 Zeilen. Das macht meist kein Sinn.
Er kann ja selbst wählen.
Ich hab dafür kein blockly -
@oliverio Ja im Prinzip geb ich Dir Recht, aber JSONATA ist Bestandteil von Blockly. Dafür muss man nichts installieren.
-
@mickym
Ah ist mir entgangen.
Ist das neu? -
@oliverio sagte in JSON nach Attribute sortieren:
@mickym
Ah ist mir entgangen.
Ist das neu?seit Version 4.4.3 des JS Adapters - also seit 3.3.2020
Habs gefunden:
-
Hab gerade mal geschaut, was das Blockly für einen JS Code erzeugt:
Im Prinzip scheint
jsonataExpression(Array,'$^(text)')
das zu langen. Der 1. Parameter ist das Objekt bzw. Array und der 2. Parameter der JSONATA Ausdruck.
-
Guten Morgen und Merci für die super Unterstützung.
Folgend gelöst:
Kurz und knapp quasi