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

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

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

[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.
  • T ticaki

    @ben1983

    und wenn du das editieren willst im State schaut es so aus?
    Bildschirmfoto 2025-02-27 um 18.53.16.png

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

    @ticaki Ganz genau.
    Wie gesagt, ich bin der Meinung, dass das schon mal so ging.
    Anscheinend ist der string das Problem.
    it einem Number array geht es.

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von
      #12

      @ben1983

      Dann weiß ich auch nicht weiter - im Adapter sieht es aber aus, als wenn der das array nochmal in einen eigenen State schreibt mit join(', '). vielleicht dann daraus holen?!

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      Ben1983B 1 Antwort Letzte Antwort
      0
      • Ben1983B Ben1983

        @haus-automatisierung
        2cbcab84-69a8-4699-9503-377cea6b5f94-image.png

        und

        Error in callback: SyntaxError: Unexpected token 'z', "zu Hause" is not valid JSON
        

        er kann es halt nicht parsen, aber wie mache ich denn sonst aus dem Stringarray ein Objekt, damit ich auf die einzelnen elemente zugreifen kann?

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

        @ben1983 sagte: Error in callback: SyntaxError: Unexpected token 'z', "zu Hause" is not valid JSON

        Dieser Fehler wird erzeugt, wenn der DP kein JSON, sondern ein Array enthält.

        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
        • Ben1983B Ben1983

          @ticaki Ganz genau.
          Wie gesagt, ich bin der Meinung, dass das schon mal so ging.
          Anscheinend ist der string das Problem.
          it einem Number array geht es.

          CodierknechtC Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #14

          @ben1983

          Geht auch mit string:

          0a52fc92-05c0-49dc-9cd3-d636d656e356-grafik.png
          3b193534-a24f-4496-8cb3-17c5add55974-grafik.png

          {
            "common": {
              "name": "array",
              "desc": "Manuell erzeugt",
              "role": "json",
              "type": "string",
              "read": true,
              "write": true
            },
            "type": "state",
            "native": {},
            "_id": "0_userdata.0.Test.array",
            "acl": {
              "object": 1636,
              "state": 1636,
              "owner": "system.user.admin",
              "ownerGroup": "system.group.administrator"
            },
            "from": "system.adapter.admin.0",
            "user": "system.user.admin",
            "ts": 1740681459150
          }
          

          "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
          • paul53P paul53

            @ben1983 sagte: Error in callback: SyntaxError: Unexpected token 'z', "zu Hause" is not valid JSON

            Dieser Fehler wird erzeugt, wenn der DP kein JSON, sondern ein Array enthält.

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

            @paul53 Ja ok, er ist ja als JSON deklariert.
            Was soll ich machen, der wert wird ja aus dem Adapter geschrrieben.

            CodierknechtC paul53P 2 Antworten Letzte Antwort
            0
            • Ben1983B Ben1983

              @paul53 Ja ok, er ist ja als JSON deklariert.
              Was soll ich machen, der wert wird ja aus dem Adapter geschrrieben.

              CodierknechtC Online
              CodierknechtC Online
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von Codierknecht
              #16

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

              er ist ja als JSON deklariert.

              Der ist genauso deklariert wie Deiner.
              Typ = "string", Role = "json".

              Edit
              Funktioniert mit Role = "state" aber ebenso.

              "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
              • T ticaki

                @ben1983

                Dann weiß ich auch nicht weiter - im Adapter sieht es aber aus, als wenn der das array nochmal in einen eigenen State schreibt mit join(', '). vielleicht dann daraus holen?!

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

                @ticaki Also wenn ich in einem Testscript das array direkt rein schreibe, dann gibt es genau den Fehler,
                schreibe ich es mit JSON.stringify rein dann funktioniert das auslesen und parsen

                CodierknechtC 1 Antwort Letzte Antwort
                0
                • Ben1983B Ben1983

                  @paul53 Ja ok, er ist ja als JSON deklariert.
                  Was soll ich machen, der wert wird ja aus dem Adapter geschrrieben.

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

                  @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);
                  };
                  

                  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
                  • Ben1983B Ben1983

                    @ticaki Also wenn ich in einem Testscript das array direkt rein schreibe, dann gibt es genau den Fehler,
                    schreibe ich es mit JSON.stringify rein dann funktioniert das auslesen und parsen

                    CodierknechtC Online
                    CodierknechtC Online
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #19

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

                    "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

                    Ben1983B 1 Antwort Letzte Antwort
                    0
                    • 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 Online
                        CodierknechtC Online
                        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 Online
                              CodierknechtC Online
                              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 Online
                                haus-automatisierungH Online
                                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 Online
                                      haus-automatisierungH Online
                                      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 Online
                                          haus-automatisierungH Online
                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          807

                                          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