NEWS
Adapter "log Parser" - Komma bereinigen
-
Hallo,
ich spiele gerade mit o.g. Adapter rum.In der Anleitung steht:
Was ist aber, wenn man einen String entfernen möchte der auch ein komma enthält.
z.B.
json = {"name": "Robo", "id": "081603", "status": {"status": 17, "distance": 0,.......
Ich möchte nun den vorderen Teil:
json = {"name": "Robo", "id": "081603", "status":
entfernen.
Da hier aber auch Komma enthalten sind, erkennt der Adpater dies nicht korrekt.Wie muss man dies nun eingeben, damit auch die Kommas im vorderen Teil entfernt werden?
mfg
Dieter -
@bahnuhr
Es handelt sich doch hier bei um json-DP. Dort kann man ja dann direkt auf die Werte zugreifen:json_distance =jsonataExpression((function () { try {return JSON.parse(DEIN_JSON);} catch(e) {return {};}})(),'status.distance');
-
@MCU sagte in Adapter "log Parser" - Komma bereinigen:
Es handelt sich doch hier bei um json-DP. Dort kann man ja dann direkt auf die Werte zugreifen:
Das will ich aber nicht. An die Werte komme ich schon per Script.
Ich möchte mir die Meldungen im Zeitablauf in vis anschauen.
Und dafür benötige ich eine Bereinigung -
@bahnuhr Vielleicht muß man dann im log Parser, wenn man ein Komma weg haben will das in Hochkomma setzen /','/?
-
@MCU sagte in Adapter "log Parser" - Komma bereinigen:
@bahnuhr Vielleicht muß man dann im log Parser, wenn man ein Komma weg haben will das in Hochkomma setzen /','/?
Ich will ja nicht alle Komma weghaben, sondern nur den Text am Anfang; wie oben geschrieben.
-
@bahnuhr Muß das denn unbedingt der Parser machen. Oder substring? slice? Also Teilstring verwenden?
-
@MCU sagte in Adapter "log Parser" - Komma bereinigen:
@bahnuhr Muß das denn unbedingt der Parser machen. Oder substring? slice? Also Teilstring verwenden?
Per Script bekomm ich dies auch hin.
Aber muss ja irgendwie mit dem Parser auch gehen.
Momentan versuch ich es mit regex.
Teilweise klappt das schon. -
Folgenden Eintrag hab ich nun bei Bereinigen genommen:
json = ,/{"name"[^] "status": /,/ "clock"[^*]*true}/
Aus:
{"name": "Robo-Maeh", "id": "081603", "status": {"status": 17, "distance": 0, "stopped": false, "dooropen": false, "duration": 182300, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97, "hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25}, "clock": {"date": "2020-10-06", "time": "21:51:59", "unix": 1602021119}, "successful": true}wird dann:
{"status": 17, "distance": 0, "stopped": false, "dooropen": false, "duration": 184100, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97, "hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25},Nur das letzte Komma bekomme ich nicht weg.
In regex101 passt es.
Aber in iob will dies nicht so richtig.
Sobald das Komma vor clock steht, will iob nicht.@Homoran
Du bist für mich der regex Spezialist.
Hast du eine Idee warum dies net tut.mfg
Dieter -
wie gesagt in regex101 tut es:
-
@bahnuhr sagte in Adapter "log Parser" - Komma bereinigen:
Du bist für mich der regex Spezialist.
was macht denn hier das regex?
wenn ich den Thread verstanden habe willst du etwas mit Komma nicht separiert haben.
Hast du da schon mal versucht das Komma zu escapen\,
oder in Hochkommata zu setzen'bla,blubb'
Ich verstehe nicht wo hier was für ein Regex machen soll. Im Screenshot ist ein anderes als im Text
-
@Homoran sagte in Adapter "log Parser" - Komma bereinigen:
was macht denn hier das regex?
Jetzt hatte ich alles schon geschrieben (inkl. Hardcopy)
Und dann war das Forum nicht erreichbar. Ärgerlich.Fazit:
\ und ' klappt nicht.
Der Adapter mag keine Komma im String.
Funktioniert nicht.mfg
Dieter -
@bahnuhr sagte in Adapter "log Parser" - Komma bereinigen:
Jetzt hatte ich alles schon geschrieben (inkl. Hardcopy)
und ich verstehe immer noch nicht was du erreichen willst.
Ich kenne den Adapter nicht und weiß nicht wie er funktioniert.
Was soll das RegEx denn bewirken?
Was soll herauskommen?Kannst du da mal ein Beispiel geben?
Vorher (Original) -> Nachher (Wunschzustand) -
@Homoran sagte in Adapter "log Parser" - Komma bereinigen:
Vorher (Original) -> Nachher (Wunschzustand)
Original:
json = {"name": "Robo-Maeh", "id": "081603", "status": {"status": 17, "distance": 0, "stopped": false, "dooropen": false,
"duration": 182300, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97,
"hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25}, "clock":
{"date": "2020-10-06", "time": "21:51:59", "unix": 1602021119}, "successful": true}Wunsch:
{"status": 17, "distance": 0, "stopped": false, "dooropen": false,
"duration": 182300, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97,
"hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25}also:
vorne bis status weg
und hinten ab clcok wegerreicht habe ich dies bei Bereinigen mit:
json = ,/{"name"[^] "status": /,/ "clock"[^*]*true}/es kommt dann:
{"status": 17, "distance": 0, "stopped": false, "dooropen": false, "duration": 184100, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97, "hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25},-> Aber das letzte Komma geht nicht weg. Egal welcher regex ich benutze; (was aber in regex101 klappt)
Problem:
Adapter trennt die einzelnen Ausdrücke per Komma. -
versuch es mal mit
tus": {"([[:ascii:]\s]+). "cl
regex101 hat mich gerade extrem verunsischert, üblicherweise steht ein Punkt für jedes beliebige Zeichen, anscheinend nicht in eckigen Klammern, also bei
[.\s]+
gilt der Punkt angeblich tatsächlich nur als Punktund du willst vorne hinter dem ersten "status" tatsächlich die führende geschweifte Klammer weg haben?
-
@Homoran sagte in Adapter "log Parser" - Komma bereinigen:
und du willst vorne hinter dem ersten "status" tatsächlich die führende geschweifte Klammer weg haben?
Ne, ist aber im Wunsch doch noch drin.
Wunsch:
{"status": 17,...Habe es mal versucht mit regex101
Es wird aber nichts gemacht.
-
@bahnuhr sagte in Adapter "log Parser" - Komma bereinigen:
Habe es mal versucht mit regex101
wo meinst du, dass ich es her habe?
Sorry, mein Fehler - melde mich gleich!
-
dein oben geposteter sieht aber anders aus
-
@bahnuhr sagte in Adapter "log Parser" - Komma bereinigen:
dein oben geposteter sieht aber anders aus
ja, hatte ihn anschließend noch was optimiert
Aber jetzt:
tus": {"(.+\s.+\s.+), "cl
oder:
tus": {"([\w\W]+), "cl
-
@Homoran sagte in Adapter "log Parser" - Komma bereinigen:
tus": {"(.+\s.+\s.+), "cl
Rainer,
ich brauchs aber genau andersrum.
gemacht werden muss:
json = {"name": "Robo-Maeh", "id": "081603", "status":
und
, "clock": {"date": "2020-10-06", "time": "21:51:59", "unix": 1602021119}, "successful": true}Also der erste und letzte Teil, weil dies wird ja bereinigt.
Stehen bleiben soll dann:
{"status": 17, "distance": 0, "stopped": false, "dooropen": false, "duration": 182300, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97, "hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25}Gerne auch in 2 matches.
kann man ja dann mit Komma getrennt eintragen. -
@bahnuhr sagte in Adapter "log Parser" - Komma bereinigen:
json = {"name": "Robo-Maeh", "id": "081603", "status": {"status": 17, "distance": 0, "stopped": false, "dooropen": false,
"duration": 182300, "mode": 2, "battery": 100, "hours": 6}, "timer": {"status": 0}, "blades": {"quality": 97,
"hours": 6, "days": 6}, "wlan": {"signal": -74}, "health": {"temperature": 23, "humidity": 25}, "clock":
{"date": "2020-10-06", "time": "21:51:59", "unix": 1602021119}, "successful": true}Der 1. Teil geht so:
Nur der 2. Teil geht nicht.