FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Loredo am 29 Mai 2019, 14:39:08

Titel: toJSON Numeric Serialization
Beitrag von: Loredo am 29 Mai 2019, 14:39:08
Hallo Rudi,


mir ist aufgefallen, dass toJSON() nummerische Werte als String seralisiert.
Für den Fall, dass der korrekte Datentyp exportiert werden soll, habe ich einen Patch angehängt.




Grüße
Julian
Titel: Antw:toJSON Numeric Serialization
Beitrag von: rudolfkoenig am 29 Mai 2019, 18:43:29
Ich habe jetzt folgenden Patch eingebaut :--- fhem.pl    (revision 19463)
+++ fhem.pl    (working copy)
@@ -5050,6 +5050,9 @@
   if(not defined $val) {
     return "null";

+  } elsif (length( do { no warnings "numeric"; $val & "" } )) {
+    return $val;
+
   } elsif (not ref $val) {
     $val =~ s/([\x00-\x1f\x22\x5c\x7f])/sprintf '\u%04x', ord($1)/ge;



getestet mit perl 5.18 und 5.28:fhem> { toJSON({a=>1, b=>"b",c=>"3",d=>{a=>1,b=>"b"},e=>[1,2,"3"]}) }
{"a":1,"b":"b","c":"3","d":{"a":1,"b":"b"},"e":[1,2,"3"]}


und eingecheckt.

Diese Idee habe ich hier (https://stackoverflow.com/questions/12647/how-do-i-tell-if-a-variable-has-a-numeric-value-in-perl) geklaut.
Titel: Antw:toJSON Numeric Serialization
Beitrag von: Loredo am 29 Mai 2019, 19:47:20
Ziemlich smart!  8)