FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: delMar am 01 Februar 2022, 22:15:02

Titel: json2nameValue geändertes Verhalten?
Beitrag von: delMar am 01 Februar 2022, 22:15:02
Hallo,
seit ein paar Tagen macht offenbar json2nameValue etwas anders als vorher.

Konkret kriege ich zB folgendes JSON rein und will mir den Wert von "Device" holen:

{
  "Header":{
    "Version":5,
    "Device":"87",
    "Timestamp":1643639621
  },...


Bisher hat $keyValues->{Header_Device} problemlos funktioniert.
Neuerdings kommt aber Use of uninitialized value $input in hash element at

Hat sich die Art geändert, wie ich Werte rauskriege?

Vielen Dank
schöne Grüße
Martin
Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: rudolfkoenig am 01 Februar 2022, 22:34:16
ZitatHat sich die Art geändert, wie ich Werte rauskriege?

Soweit ich das beurteilen kann, nicht:
fhem> { my $x=json2nameValue('{ "Header":{ "Version":5, "Device":"87", "Timestamp":1643639621 } }');; join("\n", map { "$_ => $x->{$_}" } sort keys %{$x}) }
Header_Device => 87
Header_Timestamp => 1643639621
Header_Version => 5
Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: delMar am 01 Februar 2022, 22:55:09
Danke für die rasche Antwort.

Dein Beispiel funktioniert reproduzierbar bei mir.

Im Modul kommen allerdings trotzdem die uninitialized values.

Ich hab jetzt spaßeshalber die Änderung hier https://svn.fhem.de/trac/changeset/25544/trunk bei mir lokal mal zurückgebaut.
Und dann funktioniert es auch im Modul wieder.

Ich hab leider keine Ahnung, wo technisch der Unterschied zwischen einer Ausführung im Modul oder einer Ausführung in der Kommandozeile ist, ich denke aber, dass es hier ein Problem gibt.

Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: rudolfkoenig am 02 Februar 2022, 09:33:39
ZitatIch hab jetzt spaßeshalber die Änderung hier https://svn.fhem.de/trac/changeset/25544/trunk bei mir lokal mal zurückgebaut.
Und dann funktioniert es auch im Modul wieder.
Mag sein, aber beide Aenderungen dienen nur der besseren JSON-konformitaet (Leerstring als Schluessel und Fliesskomma in der wissenschaftlichen Notation), und haben keine Auswirkungen auf das vorherige Beispiel.

Ich helfe gerne, aber ich brauche konkrete Hinweise.
Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: delMar am 02 Februar 2022, 09:38:36
Danke Rudi.

Das konkreteste, was ich derzeit weiß, ist, dass es im Modul nicht funktioniert, als direktes Kommando aber schon.

Ich werde versuchen, das Problem weiter einzugrenzen und für dich reproduzierbar zu machen und melde mich dann wieder.
Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: rudolfkoenig am 02 Februar 2022, 09:43:20
Vielleicht hilft bei der Suche, dass neuerdings bei einem Syntax-Fehler der Eintrag json2nameValueErrorText und json2nameValueInput gesetzt wird.
Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: delMar am 02 Februar 2022, 20:46:13
Ich konnte den Fehler noch nicht isolieren, wollte aber nur mal zu Protokoll geben, dass bei zwei Usern vom Modul das Rückgängig machen der gestern erwähnten Änderung das Modul wieder funktioniert:

https://forum.fhem.de/index.php/topic,92740.msg1205419.html#msg1205419

Das Modul hat seit Jänner 2021 kein Update erfahren.
Titel: Antw:json2nameValue geändertes Verhalten?
Beitrag von: delMar am 07 Februar 2022, 08:51:41
Mit dem heutigen Update funktioniert das Modul wieder.

Um verirrte Suchende hier nicht ohne Antwort zu lassen: es waren wohl zwei Probleme
zum Einen kam teilweise ein invalides JSON rein.
Da musste ich aber erstmal draufkommen.
Zur Fehlersuche wurde natürlich immer ein valides verwendet (also unmöglich nachzustellen)

zum Anderen hat Rudi dadurch auch ein Problem im Parser gefunden und behoben:
Zitat von: rudolfkoenig am 06 Februar 2022, 21:04:51
falls in einem JSON auf eine Zahl ein Newline folgte, hat der Parser versagt.

Danke für deine Hilfe Rudi