\ u0000上的json_decode失败

时间:2015-06-03 08:59:04

标签: php json google-app-engine

如果我使用私有或受保护的变量序列化一个类 \ u0000CLASNAME \ u0000或者在受保护\ u0000 * \ u0000的情况下,前缀为变量名称。

json编码此字符串,然后在GAE php55上解码它在\ u0000上失败。

示例代码:

class A {
    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";

返回(在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:"

在我的开发服务器上,这很好用:

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;}

这也可以在GoogleAppEngineLauncher上重现(至少在OS X版本:“1.9.20”)

0 个答案:

没有答案