Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Zugriff auf Werte in einem json-objekt

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    911

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Zugriff auf Werte in einem json-objekt

Scheduled Pinned Locked Moved Skripten / Logik
5 Posts 3 Posters 3.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    ehome
    wrote on last edited by
    #1

    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 :D ???

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      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]
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #3

        …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]
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • E Offline
          E Offline
          ehome
          wrote on last edited by
          #4

          danke paul53 - so geht es.

          1 Reply Last reply
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #5

            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.

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            715

            Online

            32.6k

            Users

            82.2k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe