Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Array in einer json Abfrage auslesen

    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

    Array in einer json Abfrage auslesen

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

      Hallo Leute,

      ich stehe vor einer kniffligen Aufgabe und brauche mal eure Hilfe.
      Per HTTP Get hole ich mir Daten. Diese kommen als json rein und sehen wie folgt aus:

      "data": {
          "1535": {
            "2025-03-26 03:00:00": [
              "2025-03-26 04:00:00",
              1, 0, [3, 66, 1, "1.085"
              ],
              [5, 2, 0, "0.1"
              ],
              [1, 20, 0, "1"
              ],
              [9, 14, 1, "1.333"
              ]
            ]
          }
        },
      

      Data bleibt immer gleich, ebenfalls die 1535. Der Zeitstempel ist dynamisch. Ich muss jetzt an die Daten in den eckigen Klammern, also an die Arrays. Dort interessieren mich nur die ersten beiden Zahlen, z.B.

      3 und 66
      5 und 2
      1 und 20
      usw.

      Wie kann ich dieses nun mit Blockly auslesen und die Daten verarbeiten?

      Ich habe das bei anderen json abfragen mit dem Baustein "Attribut von Objekt" gelöst. Aber dort waren nie Arrays drin und ich verzweifle gerade...

      Wäre toll, wenn einer nen Tipp hat. Danke 🙂

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

        Hier ein Vorschlag:

        e913c2bd-b0da-4144-8575-a72de6c8581a-image.png

        und der Import:

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable id="8+=Mk?BD}YCcGl~4E)j|">Objekt</variable>
           <variable id="FH.y1ywrl*?fn[mlj9`.">Liste</variable>
           <variable id="BFz8MVSjE,Wj8D#-d?^7">Paar</variable>
           <variable id=",Q,6hciy3?Rk1(p,}{z,">Wert</variable>
         </variables>
         <block type="variables_set" id="8TUEPFER^60tpZeXyo6g" x="-137" y="63">
           <field name="VAR" id="8+=Mk?BD}YCcGl~4E)j|">Objekt</field>
           <value name="VALUE">
             <block type="convert_json2object" id="I#fP01}u(y@zi]+ky=U#">
               <value name="VALUE">
                 <block type="text" id="FPjE:co!sqd}=j?;!5o/">
                   <field name="TEXT">{   "data": {     "1535": {       "2025-03-26 03:00:00": [         "2025-03-26 04:00:00",         1,         0,         [           3,           66,           1,           "1.085"         ],         [           5,           2,           0,           "0.1"         ],         [           1,           20,           0,           "1"         ],         [           9,           14,           1,           "1.333"         ]       ]     }   } }</field>
                 </block>
               </value>
             </block>
           </value>
           <next>
             <block type="debug" id="R:3IdXPc-Ye6*0flWePD">
               <field name="Severity">info</field>
               <value name="TEXT">
                 <shadow type="text" id="BKx/`I0xv2,QV6c:jxKa">
                   <field name="TEXT">test</field>
                 </shadow>
                 <block type="variables_get" id="PpY08lt65(HhfilRUlil">
                   <field name="VAR" id="8+=Mk?BD}YCcGl~4E)j|">Objekt</field>
                 </block>
               </value>
               <next>
                 <block type="variables_set" id="3-rN0Eh.S3/f*WXm=!z:">
                   <field name="VAR" id="FH.y1ywrl*?fn[mlj9`.">Liste</field>
                   <value name="VALUE">
                     <block type="convert_jsonata" id="u}[_Z`KWHAeHkdE@@V?=">
                       <value name="EXPRESSION">
                         <shadow type="text" id="eg-6.rV=oGTM`RArquVg">
                           <field name="TEXT">($lookup($$.data."1535",($keys(data."1535")[0]))~&gt;$filter( function($v){$type($v)="array"} )).[$[0],$[1]]</field>
                         </shadow>
                       </value>
                       <value name="TARGET">
                         <block type="variables_get" id="n+aI}jp_T]nxZ439rGaK">
                           <field name="VAR" id="8+=Mk?BD}YCcGl~4E)j|">Objekt</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="variables_set" id="=4,tkXz3EMg[P@3IqT3c">
                       <field name="VAR" id="FH.y1ywrl*?fn[mlj9`.">Liste</field>
                       <value name="VALUE">
                         <block type="lists_getSublist" id="e3D%iCM?~c%RZwkX;=hi">
                           <mutation at1="false" at2="false"></mutation>
                           <field name="WHERE1">FIRST</field>
                           <field name="WHERE2">LAST</field>
                           <value name="LIST">
                             <block type="variables_get" id="aK{CqcEp-hfht9Y1zaoH">
                               <field name="VAR" id="FH.y1ywrl*?fn[mlj9`.">Liste</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="controls_forEach" id="BX*IoHS{tC(S+xy8Od8t">
                           <field name="VAR" id="BFz8MVSjE,Wj8D#-d?^7">Paar</field>
                           <value name="LIST">
                             <block type="variables_get" id="-q+Kxi.wpBhtGy-d$pP$">
                               <field name="VAR" id="FH.y1ywrl*?fn[mlj9`.">Liste</field>
                             </block>
                           </value>
                           <statement name="DO">
                             <block type="controls_forEach" id="f`4c[@IR8t2/O1s6zc`r">
                               <field name="VAR" id=",Q,6hciy3?Rk1(p,}{z,">Wert</field>
                               <value name="LIST">
                                 <block type="variables_get" id="7;}F,K/;I9U:PZW@7Lj:">
                                   <field name="VAR" id="BFz8MVSjE,Wj8D#-d?^7">Paar</field>
                                 </block>
                               </value>
                               <statement name="DO">
                                 <block type="debug" id="Z})42^-;u@A1^)//YL9Z">
                                   <field name="Severity">info</field>
                                   <value name="TEXT">
                                     <shadow type="text" id="oug97Em#uz.p]6vX2qtm">
                                       <field name="TEXT">test</field>
                                     </shadow>
                                     <block type="variables_get" id="{5(0qe=W?^oW_L*0J0g7">
                                       <field name="VAR" id=",Q,6hciy3?Rk1(p,}{z,">Wert</field>
                                     </block>
                                   </value>
                                 </block>
                               </statement>
                             </block>
                           </statement>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </next>
         </block>
        </xml>
        

        Der JSONATA Code lautet wie folgt:

        ($lookup($$.data."1535",($keys(data."1535")[0]))~>$filter( function($v){$type($v)="array"} )).[$[0],$[1]]
        

        Zum Testen des JSONATA Ausdrucks siehe hier: https://try.jsonata.org/gSFY5sodQ

        b9e958ba-e9cf-4d0c-bada-63f4d0dcac2b-image.png

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

          @mickym Du bist mein Held 🙂

          Funktioniert prima...
          Die Sache mit JSONATA habe ich bisher noch nie so genau angeschaut, erspart aber ne Menge Blockly und Code.

          Vielen Dank dafür 🙂

          Rene55 1 Reply Last reply Reply Quote 0
          • Rene55
            Rene55 @HackyPaddy last edited by

            @hackypaddy Das JSON sieht so aus, als wären das Daten vom UBA. Hab ich da recht?

            H 1 Reply Last reply Reply Quote 0
            • H
              HackyPaddy @Rene55 last edited by HackyPaddy

              @rene55 Da hast Du Recht 🙂 Nutzt Du die Daten auch?

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

                @hackypaddy Ich will dich nicht vom basteln und experimentieren abhalten. Wenn du magst, schau hier: https://forum.iobroker.net/topic/79286/test-adapter-airquality-v0-1-4-github-latest

                H 1 Reply Last reply Reply Quote 0
                • H
                  HackyPaddy @Rene55 last edited by

                  @rene55 Das ist ja das schöne, das basteln und dazulernen 🙂

                  Ich hatte mich bewusst gegen den Adapter entschieden, da dieser die Daten regelmäßig abruft. Ich brauche diese aber nur einmal am Tag, das reicht mir. Zudem verbraucht der Adapter auch wieder Arbeitsspeicher und den wollte ich etwas schonen...

                  Rene55 1 Reply Last reply Reply Quote 0
                  • Rene55
                    Rene55 @HackyPaddy last edited by

                    @hackypaddy Ja sicher, wie du meinst. War auch nur ein sanfter Hinweis.☺

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    737
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    173
                    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