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. [gelöst] JSON nach kleinstem Wert parsen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

[gelöst] JSON nach kleinstem Wert parsen

Scheduled Pinned Locked Moved Skripten / Logik
7 Posts 2 Posters 645 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.
  • T Offline
    T Offline
    tempestas
    wrote on last edited by
    #1

    Hallo zusammen,

    mal wieder scheitere ich.

    Hintergrund:

    Picnic hat hier http://forum.iobroker.net/viewtopic.php … 282#p92282 aus einem meiner Skripte etwas mehr gezaubert und erzeugt ein JSON, in dem eine schöne Grafik, die Tage bis zur Abholung usw für den Müll angezeigt werden.

    Nun möchte ich aber für meine neuen Views das ganze auf der Main View so haben, dass er mir nur noch die Tage bis zum nächsten Müll (egal welche Art) anzeigt. Ich bekomme es einfach nicht hin, aus dem JSON das Minimum der Tage rauszufiltern, wobei man auch noch berücksichtigen müsste, dass es bei 0 Tagen "Heute" heißt. Das könnte man aber auch durch Sichtbarkeiten regeln.

    In dem JSON steht das hier (die Dinge für die Grafiken habe ich hier mal entfernt zwecks Lesbarkeit. Wie bekomme ich da nun eben die 4 als Minimum extrahiert?

    [{"Müllart":" Restabfall","Tage":"25"}, {"Müllart":" Papiertonne","Tage":"27"},{"Müllart":" Bioabfall","Tage":"4"},{"Müllart":" Gelber Sack","Tage":"4"}]
    
    

    Danke an alle Könner

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

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

      Etwa so:

      `var obj = JSON.parse(json);
      var min = 99;
      for(var i = 0; i < obj.length; i++) {
          var x = parseInt(obj[i].Tage);
          if(x < min) min = x; 
      }` [/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
      • T Offline
        T Offline
        tempestas
        wrote on last edited by
        #3

        Hallo paul,

        vielen Dank (ich hatte ein wenig auf deine Expertise gehofft :)

        ich habs jetzt so probiert

        `var myjson ="javascript.0.muell.json"/*javascript.0.muell.json*/;
        var json= JSON.stringify(myjson);
        
        var obj = JSON.parse(json);
        var min = 99;
        for(var i = 0; i < obj.length; i++) {
            var x = parseInt(obj[i].Tage);
            if(x < min) min = x;
        
        }
        
        log("Minimum ist "+x);` 
        
        Gibt mir "NaN" aus?
        
        Ich durchsteige JSONs noch nicht wirklich
        
        Edit: wenn ich die von mir hier dargestellt Beispiel-JSON nehme, funktioniert es wunderbar. Was mache ich mit dem eigentlichen State dann falsch?
        
        Edit 2: müsste wohl 
        
        `~~[code]~~var json= JSON.stringify(getState(myjson).val);[/code]` heißen? Fehler bleibt aber. Dann müsen die Grafiken wohl Ärger machen
        
        Edit 3:
        
        habe mal die Grafik entfernt, keine Änderung. Verstehe ich nicht.[/i]
        

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

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

          Wenn der Datenpunkt mit der ID javascript.0.muell.json den JSON-String enthält, dann so:

          `const idjson ="javascript.0.muell.json"/*javascript.0.muell.json*/;
          
          var json = getState(idjson).val;
          var obj = JSON.parse(json);
          var min = 99;
          for(var i = 0; i < obj.length; i++) {
              var x = parseInt(obj[i].Tage);
              if(x < min) min = x;
          
          }
          
          log("Minimum ist " + min);`[/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
            #5

            Habe den ersten Beitrag nochmal gelesen mit "Heute" anstelle "0". Dann muss das Skript erweitert werden

            `const idjson ="javascript.0.muell.json"/*javascript.0.muell.json*/;
            
            var json = getState(idjson).val;
            var obj = JSON.parse(json);
            var min = 99;
            for(var i = 0; i < obj.length; i++) {
                var x = obj[i].Tage;
                if(x == 'Heute') x = 0;
                else x = parseInt(x);
                if(x < min) min = x;
            }
            
            log("Minimum ist " + min);` [/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
            • T Offline
              T Offline
              tempestas
              wrote on last edited by
              #6

              Paul:

              DANKE! Läuft.

              Wann ich "stringify" nutzen muss und wann nicht, werde ich wohl nie verstehen :)

              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

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

                @tempestas:

                Wann ich "stringify" nutzen muss und wann nicht, werde ich wohl nie verstehen `
                Ist doch nicht so schwierig: Ein Objekt (Array) in einen JSON-String wandeln mit JSON.stringify(obj); umgekehrt einen JSON-String in ein Objekt (Array) wandeln mit JSON.parse(json).

                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
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                727

                Online

                32.4k

                Users

                81.5k

                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