Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Einlesen eines Arrays in Javascript klappt nicht

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.1k

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

[gelöst] Einlesen eines Arrays in Javascript klappt nicht

Geplant Angeheftet Gesperrt Verschoben JavaScript
34 Beiträge 5 Kommentatoren 2.5k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • CodierknechtC Codierknecht

    @ben1983
    Ich kann im Objektbaum rumeditieren oder einfach per setState('...', '["blubb"]') reinschreiben. Funktioniert problemlos.

    Ben1983B Offline
    Ben1983B Offline
    Ben1983
    schrieb am zuletzt editiert von Ben1983
    #20

    @codierknecht
    Ja reinschreiben oder rumeditieren geht ja auch, aber wenn man mit
    setState(id,array); rein schreibt, kann man es später nicht mehr parsen beim lesen,
    dazu sollte es mit
    setState(id,JSON.stringify(array)); rein geschrieben werden.

    Habe den Wert noch wo ander gefunden, wie von @ticaki erwähnt.
    ich trenne ihn mit split.
    Nicht der Ursprung des Problems, aber naja.

    CodierknechtC T haus-automatisierungH 3 Antworten Letzte Antwort
    0
    • Ben1983B Ben1983

      @codierknecht
      Ja reinschreiben oder rumeditieren geht ja auch, aber wenn man mit
      setState(id,array); rein schreibt, kann man es später nicht mehr parsen beim lesen,
      dazu sollte es mit
      setState(id,JSON.stringify(array)); rein geschrieben werden.

      Habe den Wert noch wo ander gefunden, wie von @ticaki erwähnt.
      ich trenne ihn mit split.
      Nicht der Ursprung des Problems, aber naja.

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #21

      @ben1983

      @paul53's Vorschlag mit dem Issue ist ja auch nicht die schlechteste Idee ;-)

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      1 Antwort Letzte Antwort
      0
      • Ben1983B Ben1983

        @codierknecht
        Ja reinschreiben oder rumeditieren geht ja auch, aber wenn man mit
        setState(id,array); rein schreibt, kann man es später nicht mehr parsen beim lesen,
        dazu sollte es mit
        setState(id,JSON.stringify(array)); rein geschrieben werden.

        Habe den Wert noch wo ander gefunden, wie von @ticaki erwähnt.
        ich trenne ihn mit split.
        Nicht der Ursprung des Problems, aber naja.

        T Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von
        #22

        @ben1983

        Was mich halt wundert ist das der Adapter es richtig macht... https://github.com/arteck/ioBroker.traccar/blob/e72f9144b44a294604039ab69ee6de4ff7728d13/main.js#L245

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        paul53P 1 Antwort Letzte Antwort
        0
        • T ticaki

          @ben1983

          Was mich halt wundert ist das der Adapter es richtig macht... https://github.com/arteck/ioBroker.traccar/blob/e72f9144b44a294604039ab69ee6de4ff7728d13/main.js#L245

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #23

          @ticaki sagte: der Adapter es richtig macht...

          Vielleicht an einer anderen Stelle nicht?
          Wenn ein Array in einen DP vom Typ "string" geschrieben wird, erzeugt der js-controller eine Warnung.

          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

          CodierknechtC 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @ticaki sagte: der Adapter es richtig macht...

            Vielleicht an einer anderen Stelle nicht?
            Wenn ein Array in einen DP vom Typ "string" geschrieben wird, erzeugt der js-controller eine Warnung.

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #24

            @paul53 sagte in Einlesen eines Arrays in Javascript klappt nicht:

            Wenn ein Array in einen DP vom Typ "string" geschrieben wird, erzeugt der js-controller eine Warnung.

            Das sollte @Ben1983 dann im Log erkennen können.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Antwort Letzte Antwort
            0
            • Ben1983B Ben1983

              @codierknecht
              Ja reinschreiben oder rumeditieren geht ja auch, aber wenn man mit
              setState(id,array); rein schreibt, kann man es später nicht mehr parsen beim lesen,
              dazu sollte es mit
              setState(id,JSON.stringify(array)); rein geschrieben werden.

              Habe den Wert noch wo ander gefunden, wie von @ticaki erwähnt.
              ich trenne ihn mit split.
              Nicht der Ursprung des Problems, aber naja.

              haus-automatisierungH Offline
              haus-automatisierungH Offline
              haus-automatisierung
              Developer Most Active
              schrieb am zuletzt editiert von
              #25

              @ben1983 sagte in Einlesen eines Arrays in Javascript klappt nicht:

              setState(id,array); rein schreibt, kann man es später nicht mehr parsen beim lesen,
              dazu sollte es mit
              setState(id,JSON.stringify(array)); rein geschrieben werden.

              Ja, logisch. Der Datentyp des Datenpunktes ist ja string. Also musst Du auch einen string schreiben (und kein Array).

              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
              📚 Meine inoffizielle ioBroker Dokumentation

              Ben1983B 1 Antwort Letzte Antwort
              0
              • haus-automatisierungH haus-automatisierung

                @ben1983 sagte in Einlesen eines Arrays in Javascript klappt nicht:

                setState(id,array); rein schreibt, kann man es später nicht mehr parsen beim lesen,
                dazu sollte es mit
                setState(id,JSON.stringify(array)); rein geschrieben werden.

                Ja, logisch. Der Datentyp des Datenpunktes ist ja string. Also musst Du auch einen string schreiben (und kein Array).

                Ben1983B Offline
                Ben1983B Offline
                Ben1983
                schrieb am zuletzt editiert von
                #26

                @haus-automatisierung Ja das war ja nur einer Feststellung, dass beim reinschreiben als Array genau dieser Fehler auftaucht.... also eventuell im Adapter so gemacht wird

                haus-automatisierungH 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @ben1983 sagte: der wert wird ja aus dem Adapter geschrrieben.

                  Issue auf Github erstellen.

                  Workaround:

                  on(regExDeviceGeofences,(dp)=>{
                      let Geofences = dp.state.val;
                      if(typeof Geofences == 'string') Geofences = JSON.parse(Geofences);
                  };
                  
                  Ben1983B Offline
                  Ben1983B Offline
                  Ben1983
                  schrieb am zuletzt editiert von
                  #27

                  @paul53 was soll mir eigentlich dieser Wirkstoff bringen?
                  Der type ist ja immer bei dem Datenpunkt String.

                  haus-automatisierungH paul53P 2 Antworten Letzte Antwort
                  0
                  • Ben1983B Ben1983

                    @paul53 was soll mir eigentlich dieser Wirkstoff bringen?
                    Der type ist ja immer bei dem Datenpunkt String.

                    haus-automatisierungH Offline
                    haus-automatisierungH Offline
                    haus-automatisierung
                    Developer Most Active
                    schrieb am zuletzt editiert von haus-automatisierung
                    #28

                    @ben1983 sagte in Einlesen eines Arrays in Javascript klappt nicht:

                    Der type ist ja immer bei dem Datenpunkt String.

                    Du meinst die Warnung? Die soll Dir sagen, dass Du etwas falsch machst. Wenn Du den Datentyp nicht auf string, sondern auf array stellst, dann wird (logischerweise) nach wie vor JSON gespeichert, aber die Konvertierung hin und zurück erledigt der JavaScript-Adapter für Dich.

                    Gilt natürlich nur für eigene Datenpunkte. Bei den Datenpunkten von Adaptern muss man damit leben, was dir die Entwickler liefern. Da stellt man bitte nicht einfach den Datentyp um.

                    Dann könntest Du auch direkt ein Array in setState übergeben - ohne JSON.stringify(). Und beim Lesen brauchst Du auch kein JSON.parse() mehr. Das gilt für Datentyp array und object.

                    Habe ich aber auch alles schon rauf und runter erklärt mit Beispielen...

                    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                    📚 Meine inoffizielle ioBroker Dokumentation

                    Ben1983B 1 Antwort Letzte Antwort
                    0
                    • haus-automatisierungH haus-automatisierung

                      @ben1983 sagte in Einlesen eines Arrays in Javascript klappt nicht:

                      Der type ist ja immer bei dem Datenpunkt String.

                      Du meinst die Warnung? Die soll Dir sagen, dass Du etwas falsch machst. Wenn Du den Datentyp nicht auf string, sondern auf array stellst, dann wird (logischerweise) nach wie vor JSON gespeichert, aber die Konvertierung hin und zurück erledigt der JavaScript-Adapter für Dich.

                      Gilt natürlich nur für eigene Datenpunkte. Bei den Datenpunkten von Adaptern muss man damit leben, was dir die Entwickler liefern. Da stellt man bitte nicht einfach den Datentyp um.

                      Dann könntest Du auch direkt ein Array in setState übergeben - ohne JSON.stringify(). Und beim Lesen brauchst Du auch kein JSON.parse() mehr. Das gilt für Datentyp array und object.

                      Habe ich aber auch alles schon rauf und runter erklärt mit Beispielen...

                      Ben1983B Offline
                      Ben1983B Offline
                      Ben1983
                      schrieb am zuletzt editiert von
                      #29

                      @haus-automatisierung nochmal… ich schreibe NICHT in den Datenpunkt.
                      Wollte das nur testen, dass es dann diesen Fehler gibt .

                      1 Antwort Letzte Antwort
                      0
                      • Ben1983B Ben1983

                        @haus-automatisierung Ja das war ja nur einer Feststellung, dass beim reinschreiben als Array genau dieser Fehler auftaucht.... also eventuell im Adapter so gemacht wird

                        haus-automatisierungH Offline
                        haus-automatisierungH Offline
                        haus-automatisierung
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #30

                        @ben1983 sagte in Einlesen eines Arrays in Javascript klappt nicht:

                        Ja das war ja nur einer Feststellung, dass beim reinschreiben als Array genau dieser Fehler auftaucht.... also eventuell im Adapter so gemacht wird

                        Der Adapter schreibt natürlich sauber einen JSON-String. Da wurde die Referenz zum Code weiter oben ja schon geteilt.

                        Auf was willst Du gerade hinaus? Du hast den Wert falsch geschrieben und daher habe ich nochmal die Grundlagen erläutert.

                        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                        📚 Meine inoffizielle ioBroker Dokumentation

                        Ben1983B 1 Antwort Letzte Antwort
                        0
                        • haus-automatisierungH haus-automatisierung

                          @ben1983 sagte in Einlesen eines Arrays in Javascript klappt nicht:

                          Ja das war ja nur einer Feststellung, dass beim reinschreiben als Array genau dieser Fehler auftaucht.... also eventuell im Adapter so gemacht wird

                          Der Adapter schreibt natürlich sauber einen JSON-String. Da wurde die Referenz zum Code weiter oben ja schon geteilt.

                          Auf was willst Du gerade hinaus? Du hast den Wert falsch geschrieben und daher habe ich nochmal die Grundlagen erläutert.

                          Ben1983B Offline
                          Ben1983B Offline
                          Ben1983
                          schrieb am zuletzt editiert von
                          #31

                          @haus-automatisierung ich habe keine Wert geschrieben.
                          Ich mache ein

                          JSON.parse(dp.state.val)
                          

                          Und da komme kein Array als Objekt heraus.
                          Habe lediglich gemeint, dass genau dieser Fehler auftritt, wenn Mann eben nicht als jsonstring in den dp schreibt.

                          Ich schreibe also nicht, lese nur den dp aus und parse ihn.

                          1 Antwort Letzte Antwort
                          0
                          • Ben1983B Ben1983

                            @paul53 was soll mir eigentlich dieser Wirkstoff bringen?
                            Der type ist ja immer bei dem Datenpunkt String.

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #32

                            @ben1983 sagt: Der type ist ja immer bei dem Datenpunkt String.

                            ... aber offenbar nicht der tatsächlich enthaltene Wert. Deshalb prüfen, ob der Wert vom Typ "string" ist und nur dann parsen.

                            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

                            Ben1983B 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @ben1983 sagt: Der type ist ja immer bei dem Datenpunkt String.

                              ... aber offenbar nicht der tatsächlich enthaltene Wert. Deshalb prüfen, ob der Wert vom Typ "string" ist und nur dann parsen.

                              Ben1983B Offline
                              Ben1983B Offline
                              Ben1983
                              schrieb am zuletzt editiert von
                              #33

                              @paul53 Wie gesagt, ist immer string...

                              Aber ich muss alles zurücknehmen.
                              Mir ist beim Einbauen von mehrerenloggings aufgefallen, dass der Aufruf mehrfach kam.

                              Die regExp, welche ich zum Triggern nutze, die hatte auf noch einen Datenpunkt zugetroffen.
                              Nämlich auf den, in dm die Werte als String mit Komma getrennt und nicht in einem Array stehen.
                              Aus diesem Grund ist es bei der Fehlermeldung nicht gleich aufgefallen, da der Inhalt ja mehr oder weniger gleich war.
                              Natürlich kann dort das parsen nicht klappen.

                              Habe nun an die reExp noch ein

                              $
                              

                              an das Ende gesetzt und jetzt funktioniert alles.
                              Komischerweise arbeitet die regExp im Adapter nicht mit \z am schluss. (Das geht laut diversen internet regExp testern.
                              Aber ein $ tut es wohl auch.

                              T 1 Antwort Letzte Antwort
                              0
                              • Ben1983B Ben1983

                                @paul53 Wie gesagt, ist immer string...

                                Aber ich muss alles zurücknehmen.
                                Mir ist beim Einbauen von mehrerenloggings aufgefallen, dass der Aufruf mehrfach kam.

                                Die regExp, welche ich zum Triggern nutze, die hatte auf noch einen Datenpunkt zugetroffen.
                                Nämlich auf den, in dm die Werte als String mit Komma getrennt und nicht in einem Array stehen.
                                Aus diesem Grund ist es bei der Fehlermeldung nicht gleich aufgefallen, da der Inhalt ja mehr oder weniger gleich war.
                                Natürlich kann dort das parsen nicht klappen.

                                Habe nun an die reExp noch ein

                                $
                                

                                an das Ende gesetzt und jetzt funktioniert alles.
                                Komischerweise arbeitet die regExp im Adapter nicht mit \z am schluss. (Das geht laut diversen internet regExp testern.
                                Aber ein $ tut es wohl auch.

                                T Nicht stören
                                T Nicht stören
                                ticaki
                                schrieb am zuletzt editiert von ticaki
                                #34

                                @ben1983

                                ich kannte \z nicht mal. Hab Chatgpt gefragt ohne Javascript zu erwähnen und der meint dazu

                                Bildschirmfoto 2025-02-28 um 23.36.48.png

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                1 Antwort Letzte Antwort
                                1
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                340

                                Online

                                32.4k

                                Benutzer

                                81.5k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe