如何使用JSON.stringify和json_decode()正确(how to use JSON

2019-08-22 16:26发布

我试着去传递一个mulitidimensional Javascript数组到另一个网页在我的网站是:

  • 透过JSON.stringify阵列上

  • 所得值分配给输入字段

  • 发布这一领域的第二页

  • 使用上张贴的价值json_decode

  • 随后的var_dump测试

  • (echo'ing张贴的变量直接只是为了看它是否通过来的话)

JavaScript的一个页面上:

var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;

PHP的第二页:

$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);

echo($_POST["JSONfullInfoArray"]);

回声工作正常,但后续代码var_dump返回NULL

我做了什么错?


这让我搞掂:

$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);

林不知道为什么,但职位是未来通过与一帮“\”字符字符串中分离每一个变量

了它使用json_last_error()作为sugested由Bart其返回JSON_ERROR_SYNTAX

Answer 1:

你将需要检查的内容$_POST["JSONfullInfoArray"] 如果有什么不分析json_decode只返回null 。 这是不是非常有帮助,所以当null返回你应该检查json_last_error()来获得更多错误信息。



Answer 2:

当您使用JSON字符串化然后json_decode之前先用html_entity_decode。

$tempData = html_entity_decode($tempData);
$cleanData = json_decode($tempData);


Answer 3:

其他答案都不对,因为JSON数组包含特殊字符,在我的工作的情况下,最有可能的。 什么固定对我来说:

使用Javascript(加encodeURIComponent方法)

var JSONstr = encodeURIComponent(JSON.stringify(fullInfoArray));
document.getElementById('JSONfullInfoArray').value = JSONstr;

PHP(从问题中不变)

$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);

echo($_POST["JSONfullInfoArray"]);

这两个回波和的var_dump已被证实在2000多用户输入的数据集,其中包括一个URL字段和长文本场的样本做工精细,而且是对的var_dump返回NULL的一个子集,包含的字符的URL ?&#



Answer 4:

stripslashes(htmlspecialchars(JSON_DATA))


Answer 5:

当你透过JSON.stringify(),然后保存一些数据需要读取,在PHP。 下面的代码为我工作。

json_decode( html_entity_decode( stripslashes ($jsonString ) ) );

由于@Thisguyhastwothumbs



Answer 6:

jsonText = $_REQUEST['myJSON'];

$decodedText = html_entity_decode($jsonText);

$myArray = json_decode($decodedText, true);`


文章来源: how to use JSON.stringify and json_decode() properly