Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ersten Eintrag aus JSON entfernen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ersten Eintrag aus JSON entfernen

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      ManfredHi @paul53 last edited by

      @paul53 sagte in Ersten Eintrag aus JSON entfernen:

      Wozu?

      Soll immer mit der gerade aktuellen STunde beginnen.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @ManfredHi last edited by

        @manfredhi sagte: Soll immer mit der gerade aktuellen STunde beginnen.

        Das kann man dort berücksichtigen, wo das JSON ausgewertet wird.

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

          851aa659-fbfe-4f9b-b7d0-733c7c3e3627-image.png

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id=";po#/$v(8.UbHdHNkx[6">Objekt</variable>
           </variables>
           <block type="variables_set" id=":=#[V+q{~-1q78b_H^FF" x="-1137" y="-687">
             <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
             <value name="VALUE">
               <block type="convert_json2object" id="?vV.vvxZ^NQN^_lWU1f}">
                 <value name="VALUE">
                   <block type="text" id="+fF--6Ew-2u1R;P~2mBq">
                     <field name="TEXT">{   "data": [     {       "Zeit-Beginn": "13:00"     }, {       "Zeit-Beginn": "14:00"     }, {       "Zeit-Beginn": "15:00"     }, {       "Zeit-Beginn": "16:00"     }   ] }</field>
                   </block>
                 </value>
               </block>
             </value>
             <next>
               <block type="debug" id="Di9b3@!X-|w!(OH[MyQR">
                 <field name="Severity">log</field>
                 <value name="TEXT">
                   <shadow type="text" id="Qc!nM@ch{Sc_{l1rPEtk">
                     <field name="TEXT">test</field>
                   </shadow>
                   <block type="variables_get" id="BRJ*7NTHanJ(0mYxIgZP">
                     <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                   </block>
                 </value>
                 <next>
                   <block type="debug" id="CSzbUrdljdY[mU6V(Y9H">
                     <field name="Severity">log</field>
                     <value name="TEXT">
                       <shadow type="text" id="3TF}V:USjkEO{0|$k.HC">
                         <field name="TEXT">test</field>
                       </shadow>
                       <block type="convert_jsonata" id="=ZN{fKMn7@2JC^*jQ1/8">
                         <value name="EXPRESSION">
                           <shadow type="text" id="8OI}[4dY`zbl|(X*@@%@">
                             <field name="TEXT">{"data":$.data#$i[$i&gt;0]}</field>
                           </shadow>
                         </value>
                         <value name="TARGET">
                           <block type="variables_get" id="8pAGf+2-KQ#4,J~^P=S~">
                             <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                           </block>
                         </value>
                       </block>
                     </value>
                   </block>
                 </next>
               </block>
             </next>
           </block>
          </xml>
          

          M 2 Replies Last reply Reply Quote 1
          • M
            ManfredHi @mickym last edited by ManfredHi

            @mickym
            Es funktioniert. DANKE. nur ich versteh diese Syntax im JSONata Ausdruck überhaupt nicht.

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

              @mickym
              noch eine Frage dazu: Was muss ich machen, wenn z.B. aus irgendeinem Grund das Script nicht gelaufen ist und dann z.B. nicht nur der Eintrag 0 sondern auch der nächste z.b. entfernt werden muss. Geht das mit einer Schleife oder so?

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

                @manfredhi Na Du kannst es auch ohne JSONATA machen - wird halt nur umständlicher.
                Wenn du es ohne JSONATA machst, dann musst Du auch aus dem ganzen ein Objekt machen.
                Aus diesem Objekt weist Du einer neuen Liste das Attribut data zu.
                Aus dieser Liste ermittelst Du die Anzahl Elemente
                Dann nimmst Du aus dieser Liste eine Teilliste vom 2. bis zur Anzahl Elemente.
                Dann wandelst Du das wieder in einen String und setzt "{'data':" + String + "}" dahinter. Dann hast Du in etwa das was wir in JSONATA gemacht haben.

                Ansonsten muss man es halt lernen.
                https://try.jsonata.org/R0PG0QFim

                fangen wir von Anfang an

                mit dem $ beziehst Du Dich auf das Ausgangobjekt. Also den Inhalt der Variable objekt.

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

                  @manfredhi Ja kannst Du machen - mit jedem Durchlauf wird das 1. Element entfernt. Oder Du kannst direkt mehrere Objekte entfernen in dem Du die Bedingung des Filters änderst.

                  Mit $i>1 wird das 0. und das 1. Element entfernt - in JS oder JSONATA beginnt man immer mit 0 zu zählen.

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

                    @mickym sagte in Ersten Eintrag aus JSON entfernen:

                    @manfredhi Na Du kannst es auch ohne JSONATA machen - wird halt nur umständlicher.
                    Wenn du es ohne JSONATA machst, dann musst Du auch aus dem ganzen ein Objekt machen.
                    Aus diesem Objekt weist Du einer neuen Liste das Attribut data zu.
                    Aus dieser Liste ermittelst Du die Anzahl Elemente
                    Dann nimmst Du aus dieser Liste eine Teilliste vom 2. bis zur Anzahl Elemente.
                    Dann wandelst Du das wieder in einen String und setzt "{'data':" + String + "}" dahinter. Dann hast Du in etwa das was wir in JSONATA gemacht haben.

                    Ansonsten muss man es halt lernen.
                    https://try.jsonata.org/R0PG0QFim

                    fangen wir von Anfang an

                    mit dem $ beziehst Du Dich auf das Ausgangobjekt. Also den Inhalt der Variable objekt.

                    Weiter $ beziehst Du Dich also auf das Ausgangsobjekt:

                    5d936055-1ee8-4462-9d58-f45e560dbaf6-image.png

                    mit $.data selektierst Du nun das Array das Dich interessiert:

                    972a1709-2b89-4496-b044-ff12613d19db-image.png

                    mit #$i setzt Du eine Variable, das Dir den Index zu jedem Element enthält

                    1a7a0bfc-aa64-44fc-b6eb-fc52d5954d8e-image.png

                    Nachdem wir nun eine Variable $i haben - können wir die Elemente herausfiltern, die uns interessieren. Also alle deren Index >0 sind.

                    Einen Filter definiert man einfach in eckigen Klammern:
                    20abdf3d-fd55-4285-9222-0374eb6bd1de-image.png

                    6471818f-ec22-46a7-8940-abc5024e5dac-image.png

                    Nun haben wir also das erste Element bereits entfernt. Das Ergebnis wollen wir aber wieder, wie das Ausgangsobjekt in einem Objekt mit der Eigenschaft "data" habe. Also brauchen wir das nur drum rum zu schreiben bei JSONATA und das wars schon.

                    0fd7e29e-f308-497d-b859-1a6a34908963-image.png

                    Damit wurde die ganze Magie schon erklärt.

                    Wie gesagt, wie es ohne JSONATA gehen kann, habe ich hier kurz angerissen: https://forum.iobroker.net/post/1102736

                    Solange es aber bei den Puzzleteilchen kein Teil gibt mit dem man Objekte erzeugen kann, ist das hoffnungslos umständlich.

                    1 Reply Last reply Reply Quote 0
                    • M
                      ManfredHi last edited by

                      Vielen Dank @mickym werd das jetzt mal genauer studieren und probieren.

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

                        Hätte noch eine Frage zu den Schleifen: Immer wenn ich die Schleifen "wiederhole solange" oder "wiederhole bis" nehme, stürtzt die Javascript instanz ab.
                        Wie verwendet man diese Schleifen eigentlich richtig?

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        655
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        3
                        12
                        363
                        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