Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] JSON nach Attribute sortieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] JSON nach Attribute sortieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • DJMarc75
      DJMarc75 last edited by DJMarc75

      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 ?

      F OliverIO 2 Replies Last reply Reply Quote 0
      • F
        fastfoot @DJMarc75 last edited by

        @djmarc75 jsonata.PNG

        1 Reply Last reply Reply Quote 1
        • mickym
          mickym Most Active last edited by mickym


          1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @DJMarc75 last edited by OliverIO

            @djmarc75

            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

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @OliverIO last edited by mickym

              @oliverio

              Unten ist doch mit JSONATA eine super elegante Lösung gezeigt?

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @mickym last edited by

                @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

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @OliverIO last edited by

                  @oliverio Ja im Prinzip geb ich Dir Recht, aber JSONATA ist Bestandteil von Blockly. Dafür muss man nichts installieren.

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @mickym last edited by

                    @mickym
                    Ah ist mir entgangen.
                    Ist das neu?

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @OliverIO last edited by mickym

                      @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 😉

                      abf0dafe-0729-4cda-86cd-c4ad8ce7b425-image.png

                      Habs gefunden:
                      81956152-e0b9-4c4e-8d23-e6bfb2d21182-image.png

                      1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active last edited by mickym

                        Hab gerade mal geschaut, was das Blockly für einen JS Code erzeugt:

                        fd1f1306-3468-4873-a180-c91c3f8fa303-image.png

                        Im Prinzip scheint

                        jsonataExpression(Array,'$^(text)')
                        

                        das zu langen. Der 1. Parameter ist das Objekt bzw. Array und der 2. Parameter der JSONATA Ausdruck.

                        1 Reply Last reply Reply Quote 0
                        • DJMarc75
                          DJMarc75 last edited by DJMarc75

                          Guten Morgen und Merci für die super Unterstützung.

                          Folgend gelöst:

                          Screenshot 2022-11-22 044337.png

                          Kurz und knapp quasi 👍

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          680
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          466
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo