我有一个JS文字对象字符串,例如{name:{first:"George",middle:"William"},surname:"Washington"}
,我必须在Json中转换它。我怎么能用PHP做到这一点?
答案 0 :(得分:1)
<强> JS:强>
// Pretend we're POSTing this
var foo = {foo:{first:"George",middle:"William"}};
<强> PHP:强>
$foo = $_POST['foo'];
$foo = json_decode( stripslashes( $foo ) );
echo $foo->first;
答案 1 :(得分:1)
如果有人仍在寻找一个简单的解决方案,就像我最近所做的那样,则可以查看我编写的PHP库:ovidigital/js-object-to-json
1)使用作曲家安装
composer require ovidigital/js-object-to-json
2)在项目内部使用
$json = \OviDigital\JsObjectToJson\JsConverter::convertToJson($javascriptObjectString);
答案 2 :(得分:0)
如果您很幸运地知道密钥到达脚本时将是什么,并且知道它们不会出现在值中,则可以使用str_replace()
来添加双引号。按键:
$notQuiteJson = '{name:{first:"George",middle:"William"},surname:"Washington"}';
$initialJson = array('name:','first:','middle:','surname:');
$replacedJson = array('"name":','"first":','"middle":','"surname":');
$convertedDataString = str_replace($initialJson, $replacedJson, $notQuiteJson);
$actualJson = json_decode($convertedDataString);
希望这对某人有帮助。
答案 3 :(得分:-2)
不是json_encode,请使用$var = json_decode($_POST['names'], true)
。然后,您可以像echo $var['surname']
一样使用它来回应“华盛顿”。