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
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
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.
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.
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.
Vielleicht hilft bei der Suche, dass neuerdings bei einem Syntax-Fehler der Eintrag json2nameValueErrorText und json2nameValueInput gesetzt wird.
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.
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