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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • 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.
    • paul53
      paul53 @ManfredHi last edited by

      @manfredhi sagte: den ersten Eintrag entfernen.

      Wozu?

      M 1 Reply Last reply Reply Quote 0
      • 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

                          758
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

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