Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zugriff auf Werte in einem json-objekt

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Zugriff auf Werte in einem json-objekt

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

      Hallo,

      ich habe mir ein Skript geschrieben, mit dem ich für jeden Counter eine

      Verbrauchsübersicht der letzen 12 Monate aus dem History Adapter ziehen kann. (Zur Vereinfachung habe ich der Tabelle ts_number noch ein date Feld spendiert).

      Das funktioniert so weit auch ganz gut. Allerdings möchte ich eine Gesamttabelle für eine Übersicht erstellen und entsprechnde Graiken mit Google Charts erstellen. Leider kann ich nicht auf die einzelenen Werte des Arrays zugreifen.

      Für eine Test habe ich ein Skript erstellt, welches mir die letzten 12 Monate ausgibt. Für jeden Monat möchte ich dann den Wert aus dem entsprechenenden json Objekt auslesen das ich vorher in ein Array schiebe.

      Beispiel für das json Objekt:

       [{"Monat":"2017-11","Verbrauch":60},{"Monat":"2017-10","Verbrauch":235},{"Monat":"2017-9","Verbrauch":341}]
      
      

      Zugriff auf einen Wert des json Objekts:

      var werte=JSON.parse(json);
      var verbrauchszeitraum='2017-10';
      var verbrauch=werte.Monat.verbrauchszeitraum <-??????
      
      

      Ich verstehe einfach nicht, wie ich nun für den Verbrauchszeitraum den Wert (im Beispiel 235) auslesen kann 😞 .

      Hat vielleicht jemand von den Java-Skript-Göttern eine Erklärung 😄 ???

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

        Versuche es mal so:

        `var werte=JSON.parse(json);
        var verbrauchszeitraum='2017-10';
        var verbrauch;
        
        for(var i = 0; i < werte.length; i++) {
            if(werte[i].Monat == verbrauchszeitraum) verbrauch = werte[i].Verbrauch;
        }`[/i][/i]
        
        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          …oder besser so:

          `var werte=JSON.parse(json);
          var verbrauchszeitraum='2017-10';
          var verbrauch;
          
          for(var i = 0; i < werte.length; i++) {
              if(werte[i].Monat == verbrauchszeitraum) {
                 verbrauch = werte[i].Verbrauch;
                 break;
              }   
          }`[/i][/i]
          
          1 Reply Last reply Reply Quote 0
          • E
            ehome last edited by

            danke paul53 - so geht es.

            1 Reply Last reply Reply Quote 0
            • AlCalzone
              AlCalzone Developer last edited by

              Noch eine Variante im funktionalen Stil:

              var werte=JSON.parse(json);
              var verbrauchszeitraum='2017-10';
              var wert = werte.find(w => w.Monat === verbrauchszeitraum);
              var verbrauch = wert ? wert.Verbrauch : null;
              

              Die find-Funktion liefert den ersten Eintrag eines Array, der die Bedingung erfüllt, bzw. bei der die übergebene Funktion wahr zurückgibt. Oder undefined, wenn der Eintrag nicht gefunden wurde.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              743
              Online

              31.7k
              Users

              79.6k
              Topics

              1.3m
              Posts

              3
              5
              2963
              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