NEWS
JSON Replace
-
Hallo zusammen,
ich stehe vor einem Problem, welches ich mit Blocky nicht gelöst bekomme.
Ich habe ein Datenpunkt im JSON Format:'tibberlink.0.Homes.c85a655c-5f86-451d-9ea7-46c81c28d4aa.PricesToday.json'/json/
[{"total":0.3018,"energy":0.098,"tax":0.2038,"startsAt":"2023-11-22T00:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2982,"energy":0.095,"tax":0.2032,"startsAt":"2023-11-22T01:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2982,"energy":0.095,"tax":0.2032,"startsAt":"2023-11-22T02:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2946,"energy":0.092,"tax":0.2026,"startsAt":"2023-11-22T03:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2952,"energy":0.0925,"tax":0.2027,"startsAt":"2023-11-22T04:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.298,"energy":0.0949,"tax":0.2031,"startsAt":"2023-11-22T05:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3281,"energy":0.1202,"tax":0.2079,"startsAt":"2023-11-22T06:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3526,"energy":0.1407,"tax":0.2119,"startsAt":"2023-11-22T07:00:00.000+01:00","currency":"EUR","level":"EXPENSIVE"},{"total":0.3656,"energy":0.1516,"tax":0.214,"startsAt":"2023-11-22T08:00:00.000+01:00","currency":"EUR","level":"EXPENSIVE"},{"total":0.3414,"energy":0.1313,"tax":0.2101,"startsAt":"2023-11-22T09:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.322,"energy":0.115,"tax":0.207,"startsAt":"2023-11-22T10:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3085,"energy":0.1036,"tax":0.2049,"startsAt":"2023-11-22T11:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.299,"energy":0.0957,"tax":0.2033,"startsAt":"2023-11-22T12:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.307,"energy":0.1024,"tax":0.2046,"startsAt":"2023-11-22T13:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3232,"energy":0.116,"tax":0.2072,"startsAt":"2023-11-22T14:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3277,"energy":0.1198,"tax":0.2079,"startsAt":"2023-11-22T15:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3363,"energy":0.127,"tax":0.2093,"startsAt":"2023-11-22T16:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3433,"energy":0.1329,"tax":0.2104,"startsAt":"2023-11-22T17:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3397,"energy":0.1299,"tax":0.2098,"startsAt":"2023-11-22T18:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3265,"energy":0.1188,"tax":0.2077,"startsAt":"2023-11-22T19:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3106,"energy":0.1054,"tax":0.2052,"startsAt":"2023-11-22T20:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2918,"energy":0.0897,"tax":0.2021,"startsAt":"2023-11-22T21:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2925,"energy":0.0902,"tax":0.2023,"startsAt":"2023-11-22T22:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2741,"energy":0.0748,"tax":0.1993,"startsAt":"2023-11-22T23:00:00.000+01:00","currency":"EUR","level":"CHEAP"}]
Den würde ich gerne manipulieren, dass dort nicht steht:
"startsAt":"2023-11-22T23:00:00.000+01:00", sonder
"startsAt":"23:00 Uhr",Leider habe ich mit JavaScript noch keine wirkliche erfahrung.
Kann mir da einer bei helfen ?Gruß Marcus
-
Mach es mit JSONATA - dann ist es ganz einfach. war nutzt Du Blockly oder Javascript?
Da schau mal:
-
@mickym bislang habe ich nur mit Blocky gearbeitet. Habe es da aber nicht hinbekommen (Search + Replace) und dachte darum an JavaScript.
-
@bmp Leider verstehe ich gerade nicht, warum es bei Blockly und JS nicht tut - im JSONATA Editor aber schon. Ich versuche es noch mal mit einer anderen Funktion
-
@mickym wollte dich gerade fragen, ob ich einfach zu blöd bin
-
@bmp Nein Du siehst ja dass es im JSONATA funktioniert - keine Ahnung warum es im Blockly nicht tut. OK - mit JSONATA gehts hier nicht - dabei wäre das so einfach - aber dann muss Dir wohl ein Mensch helfen.
Ich habe es auch mit der Replace Funktion versucht - aber das tut auch nicht.
https://try.jsonata.org/gY4gbHiOO
$~>|$|{'startsAt': $replace(startsAt,/.*T(\d\d:\d\d).*/,"$1") & " Uhr"}|
Sorry dann musst Du es wohl herkömmlich machen oder NodeRed nutzen.
Aber vielleicht hilft Dir ja noch jemand, der das besser als ich kann.
-
Aber vielleicht hilft Dir ja noch jemand, der das besser als ich kann.
Ich danke dir auf jeden Fall für deine Unterstützung.
Habe zumindest schon mal wieder eine neue Funktion gelernt und neue Ansätze gefunden. -
@mickym sagte in JSON Replace:
@bmp Nein Du siehst ja dass es im JSONATA funktioniert - keine Ahnung warum es im Blockly nicht tut
Im Datenpunkt stehen IMMER Strings, da funktioniert Jsonata nicht.
-
@mickym Ich habe den String ins Objekt gewandelt - hilft alles nichts - das tut nicht -warum auch immer. Mein JSONATA funktioniert jedenfalls - sieht man ja an den Links.
-
@mickym sagte in JSON Replace:
$~>|$|{'startsAt': $replace(startsAt,/.T(\d\d:\d\d)./,"$1") & " Uhr"}|
Jetzt scheint es zu gehen - keine Ahnung warum:
Hier zum Import:
Der Unterschied war wohl dass ich beim ersten Mal einen Text in die debug Ausgabe genommen haben und dann wurde das Objekt wohl wieder in Text umgewandelt. Die Puzzleteilchen sind leider nicht immer berechenbar - aber es scheint zu funktionieren, wenn es eine Objekt ist.
-
Danke euch beiden für die Hilfe.
Teste ich heute abend. Gestern hatte ich es mit RegEx in Node-Red gelöst, was auch geklappt hat. -
@bmp na da hättest du ja auch direkt die JSONATA Lösung nehmen können, wenn du anstelle der Puzzleteilchen die mächtigen Knoten verwendest.
-
@mickym Es hat geklappt mit deiner Lösung im Blocky
Vielen lieben dank für deine Hilfe.So brauche ich Node-Red nicht mitlaufen lassen.