【发布时间】:2015-11-10 11:26:42
【问题描述】:
在尝试解码由 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 的内置组件进行编码/解码。但是,如果我尝试解码此编码器生成的字符串,我会收到一条错误消息。我已经阅读了诸如“Predefined Constants”之类的文档项目以及诸如“how remove the backslash (“\”) in the json response using php?”之类的其他堆栈问题。但我似乎找不到为什么我无法解码由 json_encode 生成的字符串的原因。我用来测试这段代码的 PHP 版本是 5.5.9。
我知道我可能会因为遗漏某些东西而一无所知,但是如果我尝试在其他地方使用它,我是否应该以不同的方式处理由 json_encode 生成的字符串?
【问题讨论】: