Autor Thema: toJSON Numeric Serialization  (Gelesen 179 mal)

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3498
  • ~ Challenging Innovation ~
toJSON Numeric Serialization
« 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
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20518
Antw:toJSON Numeric Serialization
« Antwort #1 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 geklaut.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3498
  • ~ Challenging Innovation ~
Antw:toJSON Numeric Serialization
« Antwort #2 am: 29 Mai 2019, 19:47:20 »
Ziemlich smart!  8)
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1