php - json_decode fails on \u0000 -


if serialize class private or protected variables \u0000clasname\u0000 or in case of protected \u0000*\u0000 prepended variable name.

json encoding string , decoding on gae php55 fails on \u0000.

example code:

class {     public $pub = 10;     protected $priv = 20; }  $a = new a(); $serialized = serialize($a); echo "\nserialized: ".$serialized; echo "\njson: ". ($json = json_encode($serialized)); echo "\ndecode".print_r(json_decode($json),1); echo "\n"; 

returns (on gae):

serialized: o:1:"a":2:{s:3:"pub";i:10;s:7:"*priv";i:20;} json: "o:1:\"a\":2:{s:3:\"pub\";i:10;s:7:\"\u0000*\u0000priv\";i:20;}" decodeo:1:"a":2:{s:3:"pub";i:10;s:7:" 

while on development server works fine:

serialized: o:1:"a":2:{s:3:"pub";i:10;s:7:"apriv";i:20;} json: "o:1:\"a\":2:{s:3:\"pub\";i:10;s:7:\"\u0000a\u0000priv\";i:20;}" decodeo:1:"a":2:{s:3:"pub";i:10;s:7:"apriv";i:20;} 

this reproducible on googleappenginelauncher (at least on os x release: "1.9.20")


Comments