Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. JSON Liste sortieren (Funktion)

    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

    JSON Liste sortieren (Funktion)

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

      @liv-in-sky So... Habe nun auch rausbekommen, an welcher Stelle die Erstellung eine JSON unter Blockly hakte. Es fehlten die ständigen Konvertierungen "JSON nach Objekt" und "Objekt nach JSON". Es wird halt kein JSON weggeschrieben sondern "nur" ein String, der immer wieder hin-und-her zu konvertieren ist, je nachdem was gebraucht wird...

      Ich bin voll und ganz bei Dir. Direkt in JS wäre das sicher kein Problem, da direkt mit Typ JSON gearbeitet wird. Leider bin ich in JS nicht firm genug...

      Rein Zur Info mal das Ergebnis mit funktionalen Sortierungen... Sofern Du es ausprobieren möchtest, bedarf es noch eines STRING-Datenpunktes
      c7bfed15-c0de-417e-a9a8-597aaf07a2d2-image.png

      Skript: 2024-01-07_APIS_EPEX_sortieren_und_Laden-Aufheizen.json

      Herzlichen Dank für Deine Unterstützung und damit verbundene Zeit und Mühe. Du hast mir riesig geholfen. 👏 👏 👏

      M 1 Reply Last reply Reply Quote 0
      • M
        Marc9025 @ThomKast last edited by

        hallo @liv-in-sky
        ich habe ein ähnliches Problem und komme da nicht weiter.
        ich habe daten aus 2 Kalender in einem json nach diesem Beispiel:

        [[{"id":"20240318T000000CET-39684@c-trace.de","calendarName":"Marc","summary":"XXXX","date":"2024-03-17T23:00:00.000Z","timeText":"den ganzen Tag","dateText":"in 3 Tagen"},{"id":"20240319T000000CET-38713@c-trace.de","calendarName":"Marc","summary":"XXX","date":"2024-03-18T23:00:00.000Z","timeText":"den ganzen Tag","dateText":"in 4 Tagen"}],[{"id":"0e6368f6-053d-477f-a87a-6a830baf7e21","calendarName":"Maria","summary":"XXXX","date":"2024-03-14T23:00:00.000Z","timeText":"den ganzen Tag","dateText":"heute"},{"id":"5d36bf71-ef8d-45d2-bff5-0cc370cc018b","calendarName":"Maria","summary":"XXXX","date":"2024-03-21T07:15:00.000Z","startTime":"08:15","endTime":"09:15","timeText":"von 08:15 bis um 09:15","dateText":"in 6 Tagen"}]]
        

        Das würde ich jetzt gerne nach Date sortieren, bekomme es aber leider nicht hin mit dem Skript von dir ganz oben. Leider sortiert er da gar nichts.

        haus-automatisierung 1 Reply Last reply Reply Quote 0
        • haus-automatisierung
          haus-automatisierung Developer Most Active @Marc9025 last edited by

          @marc9025 Achtung: Das ist ein Array aus Arrays (mit der Länge 1). Also nicht einfach nur ein Array von Objekten.

          M 1 Reply Last reply Reply Quote 0
          • M
            Marc9025 @haus-automatisierung last edited by

            @haus-automatisierung
            ich habe die beiden json selber zusammen gefügt, habe es aber nicht hinbekommen die Ausgabe in einem Array zu bekommen.

            dc56f3ce-6ac7-4638-b56a-0251dc4e98a3-image.png

            haus-automatisierung 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @Marc9025 last edited by haus-automatisierung

              @marc9025 Zeig mal was als Wert in den beiden Datenpunkten steht. Dann ist das wahrscheinlich schon jeweils ein Array. Du bräuchtest ein ".concat" um die beiden Arrays zu verbinden. Müsste selbst mal schauen ob es das in Blockly gibt.

              Alternativ über beide Arrays iterieren und jeweils das Element an eine leere Liste anhängen.

              M 1 Reply Last reply Reply Quote 0
              • M
                Marc9025 @haus-automatisierung last edited by

                @haus-automatisierung
                im Prinzip steht das von oben in den beiden Datenpunkte.
                Nur jeweils das 1 Array mit den Kalenderdaten von Marc und im 2 Array mit Maria

                haus-automatisierung 1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @Marc9025 last edited by haus-automatisierung

                  @marc9025 sagte in JSON Liste sortieren (Funktion):

                  @haus-automatisierung
                  im Prinzip steht das von oben in den beiden Datenpunkte.
                  Nur jeweils das 1 Array mit den Kalenderdaten von Marc und im 2 Array mit Maria

                  Dann ist die Struktur also [{}] und [{}]. Das wird dann halt zu [ [{}], [{}] ]. Wenn es wirklich immer nur ein Element ist (wozu dann das Array?), könnte man auch jeweils das erste Element aus der Liste holen und dies in die neue Liste packen.

                  EDIT: Ich seh gerade, sind ja schon mehrere Elemente enthalten. Also müsste man iterieren und hinzufügen.

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Marc9025 @haus-automatisierung last edited by

                    @haus-automatisierung
                    ja genau so ist die Struktur.
                    Was ist iterieren bzw wie kann man das umsetzen ?

                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @Marc9025 last edited by

                      @marc9025 Na eine Schleife nutzen. "Für jeden Wert von ..." und dann hinzufügen zu neuer Liste.

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        Marc9025 @haus-automatisierung last edited by

                        @haus-automatisierung
                        ich habe jetzt mehrere Variation durch gespielt komme aber leider nicht auf das gewünschte Ergebnis.

                        810a2edf-d671-4736-a489-b5f2dcd1e320-image.png

                        Bei der Variante nimmt er einfach nur die 2 Liste.

                        haus-automatisierung 1 Reply Last reply Reply Quote 0
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @Marc9025 last edited by

                          @marc9025 Naja bringt ja auch nix weiterhin eine Array mit zwei weiteren Arrays zu erzeugen. Meinte das so:

                          Screenshot 2024-03-15 at 14.29.32.png

                          Ergibt

                          [
                             {
                                "id":"20240318T000000CET-39684@c-trace.de",
                                "calendarName":"Marc",
                                "summary":"XXXX",
                                "date":"2024-03-17T23:00:00.000Z",
                                "timeText":"den ganzen Tag",
                                "dateText":"in 3 Tagen"
                             },
                             {
                                "id":"20240319T000000CET-38713@c-trace.de",
                                "calendarName":"Marc",
                                "summary":"XXX",
                                "date":"2024-03-18T23:00:00.000Z",
                                "timeText":"den ganzen Tag",
                                "dateText":"in 4 Tagen"
                             },
                             {
                                "id":"0e6368f6-053d-477f-a87a-6a830baf7e21",
                                "calendarName":"Maria",
                                "summary":"XXXX",
                                "date":"2024-03-14T23:00:00.000Z",
                                "timeText":"den ganzen Tag",
                                "dateText":"heute"
                             },
                             {
                                "id":"5d36bf71-ef8d-45d2-bff5-0cc370cc018b",
                                "calendarName":"Maria",
                                "summary":"XXXX",
                                "date":"2024-03-21T07:15:00.000Z",
                                "startTime":"08:15",
                                "endTime":"09:15",
                                "timeText":"von 08:15 bis um 09:15",
                                "dateText":"in 6 Tagen"
                             }
                          ]
                          
                          1 Reply Last reply Reply Quote 1
                          • M
                            Marc9025 last edited by

                            @haus-automatisierung
                            vielen Dank, das hat schon mal geklappt.
                            Zum Sortiten habe ich das Skript oben benutz aber leider gibt er mir Fehler aus.
                            Hast du da noch ein tipp für mich wie ich da nach Date sortieren kann.

                            81bdefd0-9872-49f5-8a57-63f550799341-image.png

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

                              @marc9025

                              Probier mal so (mit Jsonata)

                              Screenshot 2024-03-15 151747.png

                              M 1 Reply Last reply Reply Quote 2
                              • M
                                Marc9025 @DJMarc75 last edited by

                                @djmarc75
                                da passiert leider gar nichts

                                DJMarc75 2 Replies Last reply Reply Quote 0
                                • DJMarc75
                                  DJMarc75 @Marc9025 last edited by

                                  @marc9025 sagte in JSON Liste sortieren (Funktion):

                                  da passiert leider gar nichts

                                  zeig mal das Blockly bitte 😉

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

                                    @djmarc75
                                    na klar
                                    55360d65-db68-4e71-a66e-1714ae8e715a-image.png

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

                                      @marc9025 sagte in JSON Liste sortieren (Funktion):

                                      da passiert leider gar nichts

                                      vll weil Du das LogLevel (im DebugBlock) mindestens auf Warn stellen musst ?!

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

                                        @marc9025 der Code von @djmarc75 ist völlig in Ordnung. Ich würde lieber mal prüfen, ob in Daten überhaupt das richtige ankommt.

                                        Hier der Beweis:

                                        10dd33a0-277f-4e02-8848-438532d956ce-image.png

                                        Und zum Import kannst Du selbst prüfen:

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                         <variables>
                                           <variable id="qjsoK4!{Ki$24!CmpGg#">daten</variable>
                                         </variables>
                                         <block type="variables_set" id="wQOT5iqhUrM=.l8:QBF1" x="88" y="63">
                                           <field name="VAR" id="qjsoK4!{Ki$24!CmpGg#">daten</field>
                                           <value name="VALUE">
                                             <block type="convert_json2object" id="EwZ8Yw%CJ:~5Z#eGTBCr">
                                               <value name="VALUE">
                                                 <block type="text" id="GKyIJkJj7ib8I5nJUb2T">
                                                   <field name="TEXT">[    {       "id":"20240318T000000CET-39684@c-trace.de",       "calendarName":"Marc",       "summary":"XXXX",       "date":"2024-03-17T23:00:00.000Z",       "timeText":"den ganzen Tag",       "dateText":"in 3 Tagen"    },    {       "id":"20240319T000000CET-38713@c-trace.de",       "calendarName":"Marc",       "summary":"XXX",       "date":"2024-03-18T23:00:00.000Z",       "timeText":"den ganzen Tag",       "dateText":"in 4 Tagen"    },    {       "id":"0e6368f6-053d-477f-a87a-6a830baf7e21",       "calendarName":"Maria",       "summary":"XXXX",       "date":"2024-03-14T23:00:00.000Z",       "timeText":"den ganzen Tag",       "dateText":"heute"    },    {       "id":"5d36bf71-ef8d-45d2-bff5-0cc370cc018b",       "calendarName":"Maria",       "summary":"XXXX",       "date":"2024-03-21T07:15:00.000Z",       "startTime":"08:15",       "endTime":"09:15",       "timeText":"von 08:15 bis um 09:15",       "dateText":"in 6 Tagen"    } ]</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="comment" id="Pz9@2aC2^DL5(!?E+(xW">
                                               <field name="COMMENT">Vorher unsortiert</field>
                                               <next>
                                                 <block type="debug" id="B^M~x)NYH0SbTx)^^{Il">
                                                   <field name="Severity">log</field>
                                                   <value name="TEXT">
                                                     <shadow type="text" id="IQ/wjuY:Y]:R7*bTtDaX">
                                                       <field name="TEXT">test</field>
                                                     </shadow>
                                                     <block type="variables_get" id="KNhZk+[g^N;mg,sj**.c">
                                                       <field name="VAR" id="qjsoK4!{Ki$24!CmpGg#">daten</field>
                                                     </block>
                                                   </value>
                                                   <next>
                                                     <block type="comment" id="_NR^H*WT9e8~hkMN,#]*">
                                                       <field name="COMMENT">Sortiert</field>
                                                       <next>
                                                         <block type="debug" id="/Na,*q~p!s_G`@02I{Cw">
                                                           <field name="Severity">log</field>
                                                           <value name="TEXT">
                                                             <shadow type="text" id="lpw7x+yW[-Lr[8Bm`r73">
                                                               <field name="TEXT">test</field>
                                                             </shadow>
                                                             <block type="convert_jsonata" id=":Uhk~Q0dFN8:mFO4_U-Z">
                                                               <value name="EXPRESSION">
                                                                 <shadow type="text" id="4uuNVT?nhO(Rfs(5):9M">
                                                                   <field name="TEXT">$^(&lt;date)</field>
                                                                 </shadow>
                                                               </value>
                                                               <value name="TARGET">
                                                                 <block type="variables_get" id="0^Ift=Pb)cHJQ-{IFHQ[">
                                                                   <field name="VAR" id="qjsoK4!{Ki$24!CmpGg#">daten</field>
                                                                 </block>
                                                               </value>
                                                             </block>
                                                           </value>
                                                         </block>
                                                       </next>
                                                     </block>
                                                   </next>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                        </xml>
                                        

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

                                          @djmarc75
                                          leider keine Änderung.
                                          das gibt er aus :

                                          	javascript.0 (126776) script.js.common.Testen.kalender: {}
                                          
                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @Marc9025 last edited by

                                            @marc9025 Mach nach dem ersten Block und lass Dir dein Objekt daten ausgeben - wenn da nichts rauskommt, kann man auch nichts sortieren.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            689
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            62
                                            4499
                                            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