尝试解码由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();
Run Code Online (Sandbox Code Playgroud)
我之前从未遇到过这样的问题,因为直到今天我还没有捕获带有反斜杠的字符串.在回顾上面的代码时,我可以使用PHP的内置组件进行编码/解码.但是,如果我尝试解码由此编码器生成的字符串,则会收到错误消息.我已经读过像" Predefined Constants " 这样的文档项目和其他堆栈问题,比如" 如何使用php删除json响应中的反斜杠("\")? ".但我似乎无法找到一个原因为什么我无法解码由json_encode生成的字符串.我用来测试这段代码的PHP版本是5.5.9.
我知道错过了一些东西我可能完全无能为力,但如果我尝试在其他地方使用它,我应该处理由json_encode生成的字符串吗?