NEWS
[gelöst] Einlesen eines Arrays in Javascript klappt nicht
-
@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 einenstring
schreiben (und kein Array). -
@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
-
@paul53 was soll mir eigentlich dieser Wirkstoff bringen?
Der type ist ja immer bei dem Datenpunkt String. -
@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 aufarray
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 - ohneJSON.stringify()
. Und beim Lesen brauchst Du auch keinJSON.parse()
mehr. Das gilt für Datentyparray
undobject
.Habe ich aber auch alles schon rauf und runter erklärt mit Beispielen...
-
@haus-automatisierung nochmal… ich schreibe NICHT in den Datenpunkt.
Wollte das nur testen, dass es dann diesen Fehler gibt . -
@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.
-
@haus-automatisierung ich habe keine Wert geschrieben.
Ich mache einJSON.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.
-
@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.
-
@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. -
ich kannte
\z
nicht mal. Hab Chatgpt gefragt ohne Javascript zu erwähnen und der meint dazu