尝试解码json_encode生成的字符串时,json_encode和/或json_decode似乎有些奇怪:
$object = new stdClass;
$object->namespace = 'myCompany\package\subpackage';
$jsonEncodedString = json_encode($object);
echo $jsonEncodedString;
// Result of echo being:
// {"namespace":"myCompany\\package\\subpackage"}
$anotherObject = json_decode($jsonEncodedString);
echo $anotherObject->namespace;
// Result of echo being:
// myCompany\package\subpackage
$yetAnotherObject = json_decode('{"namespace":"myCompany\\package\\subpackage"}');
// Result should be:
// myCompany\package\subpackage
// But returns an invalid string sequence error instead...
echo json_last_error_msg();
在此之前,我从未遇到过问题,因为直到今天,我再也不需要捕获其中带有反斜杠的字符串。在查看上面的代码时,我可以使用PHP的内置组件进行编码/解码。但是,如果我尝试解码此编码器产生的字符串,则会收到错误消息。我已经阅读了诸如“
预定义常量 ”之类的文档项目以及诸如“
如何使用php删除json响应中的反斜杠(“
\”)之类的其他堆栈问题。但是我似乎找不到原因为什么无法解码json_encode生成的字符串。我用于测试此代码的PHP版本是5.5.9。
我知道丢失某些东西可能完全一无所知,但是如果我尝试在其他地方使用它,我是否应该以不同的方式处理json_encode生成的字符串?