NEWS
Datensalat: String zu einem Array formatieren
-
Nachdem ich einen großen Datensalat aufgrund von verzögerten Datenquellen hatte konnte ich diese in einem String sortieren. Für die weitere Verwendung brauche ich die Daten aber in gleicher Reihenfolge in einem Array. Ich habe gelesen das geht gut über JSONATA geht aber mir fehlt es an Erfahrung um das umzusetzen. Danke schon mal : )
-
@simon-0 said in Datensalat: String zu einem Array formatieren:
Nachdem ich einen großen Datensalat aufgrund von verzögerten Datenquellen hatte konnte ich diese in einem String sortieren. Für die weitere Verwendung brauche ich die Daten aber in gleicher Reihenfolge in einem Array. Ich habe gelesen das geht gut über JSONATA geht aber mir fehlt es an Erfahrung um das umzusetzen. Danke schon mal : )
-
JSONata ist eigentlich dafür da, wenn du bereits ein JSON.Objekt hast.
Wie sieht den dein String aus den du in ein Array umwandeln willst?
Evtl. hilft Regex hier weiter -
@oliverio ```[{"id":"b0e793e7.295588","type":"inject","z":"589e20c7.549ed","name":"pH","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"8.0","payloadType":"num","x":410,"y":260,"wires":[["3ad7b93c.16b5f6"]]},{"id":"f5c12b11.7da598","type":"inject","z":"589e20c7.549ed","name":"temperature","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"22.1","payloadType":"num","x":390,"y":360,"wires":[["364ce6c5.f4cc8a"]]},{"id":"531c7be4.3879a4","type":"inject","z":"589e20c7.549ed","name":"d_Truebung","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"30","payloadType":"num","x":390,"y":300,"wires":[["9759dcf4.5c2dc"]]},{"id":"9d664f2f.e3c8c8","type":"debug","z":"589e20c7.549ed","name":"FuzzyJSON_Path","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1390,"y":300,"wires":[]},{"id":"da5abe75.7ad858","type":"json","z":"589e20c7.549ed","name":"","property":"payload","action":"","pretty":false,"x":810,"y":300,"wires":[["727dbfac.d17d08"]]},{"id":"1aa84020.14db78","type":"function","z":"589e20c7.549ed","name":"","func":"msg.payload = msg.payload.ph+","+msg.payload.trueb+","+msg.payload.temp+"\n";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1200,"y":300,"wires":[["9d664f2f.e3c8c8"]]},{"id":"3ad7b93c.16b5f6","type":"function","z":"589e20c7.549ed","name":"topic ph","func":"//read payload\n\nvar stringValue = msg.payload;\n\n//set and return payload\nmsg.topic = "ph";\nmsg.payload = stringValue;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":260,"wires":[["da5abe75.7ad858"]]},{"id":"364ce6c5.f4cc8a","type":"function","z":"589e20c7.549ed","name":"topic temp","func":"//read payload\n\nvar stringValue = msg.payload;\n\n//set and return payload\nmsg.topic = "temp";\nmsg.payload = stringValue;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":340,"wires":[["da5abe75.7ad858"]]},{"id":"9759dcf4.5c2dc","type":"function","z":"589e20c7.549ed","name":"topic trueb","func":"//read payload\n\nvar stringValue = msg.payload;\n\n//set and return payload\nmsg.topic = "trueb";\nmsg.payload = stringValue;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":300,"wires":[["da5abe75.7ad858"]]},{"id":"727dbfac.d17d08","type":"join","z":"589e20c7.549ed","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\n","joinerType":"str","accumulate":true,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":970,"y":300,"wires":[["1aa84020.14db78"]]},{"id":"5f5894bc.ac5fa4","type":"comment","z":"589e20c7.549ed","name":"hier soll aus dem String ein Array werden","info":"","x":1510,"y":200,"wires":[]}]
-
-
@simon-0
ok das ist ein JSON string.im javascript-adapter kannst du zunächst JSON in ein Objekt umwandeln.
In data befindet sich der Inhalt den du da gepostet hast.var obj = JSON.parse(data);
danach kannst du ganz normal auf die einzelnen Elemente zugreifen.
bspw das erste Array Element mitobj[0]
oder ein Attribut aus dem ersten Array
obj[0].payload
-
@simon-0 so ganz verstehe ich dein Anliegen nicht aber probiere mal:
let payload = JSON.parse(getState('0_userdata.0.Forum.jsonata').val); let jsonataAusdruck = '$[name.$match(/hier/)].name.$split(" ")'; let arr = jsonataExpression(payload, jsonataAusdruck); log(arr); //alle Namen als Array jsonataAusdruck = '$.name'; arr = jsonataExpression(payload, jsonataAusdruck); log(arr);
-
-
@simon-0
Nein.
Es ist ebenfalls ein Standard Adapter von
Iobroker, muss aber nachinstalliert werden.Bei node red bin ich allerdings raus
Es gibt dafür ein eigenes unterforum -
@oliverio danke ich habe es nochmal in Node Red Bereich gepostet aber dann auch selbst gelöst ; )