如何将JavaScript字面对象转换为PHP中的Json对象

16
我有一个JS文字对象字符串,例如{name:{first:"George",middle:"William"},surname:"Washington"},我需要将其转换为Json。我该如何使用PHP实现?

可能是重复的问题:如何使用PHP解析JSON字符串 - Sergiu Paraschiv
2
这有点奇怪,在 PHP 中使用 JS 对象字面量的字符串。 - Musa
可能是重复问题:如何解码这个JSON字符串? - epascarello
3
这不是一个重复的问题。JSON和对象字面量不是同一件事,json_decode无法解析对象字面量字符串。 - Aristona
你到底想要实现什么?将其转换为......? - Nico Haase
显示剩余2条评论
4个回答

5
如果有人仍在寻找一个简单的解决方案,就像我最近一样,您可以查看我编写的PHP库:ovidigital/js-object-to-json 1)使用Composer安装
composer require ovidigital/js-object-to-json

2) 在你的项目中使用它

$json = \OviDigital\JsObjectToJson\JsConverter::convertToJson($javascriptObjectString);

这个问题的好解决方案! - Gixxy22

3

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;

恰当的给予功劳: https://www.youtube.com/watch?v=pORFYsgOXog


(注:该视频与it技术无关)

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);

虽然不完美,但希望这能帮助到某些人。


我会把这个作为答案。它适用于我需要从JavaScript文件中获取数据的情况。 - Joeri

-4
不要使用json_encode,而是使用$var = json_decode($_POST['names'], true)。然后你可以像这样使用它:echo $var['surname']来输出“Washington”。

4
这不是一个 JSON 格式的字符串,所以你的答案不起作用。这是一个字符串格式的对象字面量,因此你的解决方案实际上会输出 null。 - Aristona

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接