Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Anfänger braucht Hilfe in einem Script bei json auflösen

    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

    [gelöst]Anfänger braucht Hilfe in einem Script bei json auflösen

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

      Hallo Leute,

      ich habe folgenden json-Wert

      {"raw" : [{"Tag":"Donnerstag","Datum":"14.03.2019  ","Ereignis":" Restmüll","Tage":"12"},{"Tag":"Heute","Datum":"02.03.2019  ","Ereignis":" Altpapier","Tage":"0"},{"Tag":"Montag","Datum":"11.03.2019  ","Ereignis":" Verpackungen","Tage":"9"},{"Tag":"Samstag","Datum":"09.03.2019  ","Ereignis":" Bioabfall","Tage":"7"}]}
      

      Nun möchte ich, das "Ereignis" und das passende "Tage" in einen Datenpunkt in Objekte zusammenlegen.

      müll1.JPG

      Doch leider klappt die Auflösung nicht so ganz, bei allen Datenpunkten steht der gleiche (letzte) Wert.

      Hier das Script

      var idJSON = 'javascript.0.muell.json';  // Datenpunkt-ID mit JSON-String
      var Term1;
      var Term2;
      var restmuell;
      var gelbersack;
      var papier;
      var bio;
      var logging = true;
       
      function JSONtoTerm(json) {
          var obj = JSON.parse(json);
      
      for(let j = 0; j < 4; j++) {
      
      if (logging) log(obj.raw[j].Ereignis);
      if (logging) log(obj.raw[j].Tage);
      
          Term1 = obj.raw[j].Ereignis;
          Term2 = obj.raw[j].Tage;
      
          if (Term1 == "Restmüll") {
              restmuell = Term2;
          }
          if (Term1 == "Altpapier") {
              gelbersack = Term2;
          }
          if (Term1 == "Verpackungen") {
              papier = Term2;
          }
          if (Term1 == "Bioabfall") {
              bio = Term2;
          }
          setState("javascript.0.muell.Hausmüll",restmuell);
          setState("javascript.0.muell.GelberSack",gelbersack); 
          setState("javascript.0.muell.Papier",papier); 
          setState("javascript.0.muell.Bio",bio); 
      }
      }
      
      
      
      JSONtoTerm(getState(idJSON).val);  // Script start
       
      on(idJSON, function(dp) {  // triggern bei Wertänderung
          JSONtoTerm(dp.state.val);
      });
      

      Hoffe mir kann jemand zeigen, wo ich den gedankenfehler habe

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

        @Torsten_MG Setze mal die 4 setState() hinter die For-Schleife.

        T 1 Reply Last reply Reply Quote 0
        • T
          Torsten_MG @paul53 last edited by

          @paul53 sagte in Anfänger braucht Hilfe in einem Script bei json auflösen:

          @Torsten_MG Setze mal die 4 setState() hinter die For-Schleife.

          Hat leider den selben Effekt

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

            Wie sieht das Log mit den 8 Einträgen aus ?

            T 1 Reply Last reply Reply Quote 0
            • T
              Torsten_MG @paul53 last edited by

              @paul53 sagte in Anfänger braucht Hilfe in einem Script bei json auflösen:

              Wie sieht das Log mit den 8 Einträgen aus ?

              So:

              müll_log.JPG

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

                Es muss beim Ereignis als erstes Zeichen ein Leerzeichen eingefügt werden, damit der Vergleich funktioniert. Beispiel:

                    if(Term1 == " Restmüll") restmuell = Term2;
                
                T 1 Reply Last reply Reply Quote 0
                • T
                  Torsten_MG @paul53 last edited by

                  @paul53 sagte in Anfänger braucht Hilfe in einem Script bei json auflösen:

                  Es muss beim Ereignis als erstes Zeichen ein Leerzeichen eingefügt werden, damit der Vergleich funktioniert. Beispiel:

                      if(Term1 == " Restmüll") restmuell = Term2;
                  

                  Danke!! Das war´s

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  780
                  Online

                  31.9k
                  Users

                  80.1k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  401
                  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