如何处理 json 字符串中的反斜杠 php
在尝试解码由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产生的字符串?