Autor Thema: toJSON Numeric Serialization  (Gelesen 241 mal)

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ 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
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20779
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: 3633
  • ~ Challenging Innovation ~
Antw:toJSON Numeric Serialization
« Antwort #2 am: 29 Mai 2019, 19:47:20 »
Ziemlich smart!  8)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

 

decade-submarginal