json_decode返回的是json字符串而不是数组

3
<?php

$json=file_get_contents('php://input',true);
$data = json_decode($json, true);

print_r($data);
?>

给出的输出是:{"EventTitle":"游戏","EventBody":"正文","EventDate":"2016年11月20日","EventType":"派对"}

发布的Json数据为:

 {"EventTitle":"Game","EventBody":"body","EventDate":"20 November, 2016","EventType":"party"}

将json数据写入变量并传递给json_decode是有效的,但从“php://input”发送相同的内容返回JSON数据而不是关联数组。

var_dump($json) 打印的是什么内容? - tkausl
是的,它打印了这个值: string(107) ""{\"EventTitle\":\"Game\",\"EventBody\":\"body\",\"EventDate\":\"20 November, 2016\",\"EventType\":\"party\"}"" - Nadir Laskar
如果你将 file_get_contents('php://input',true); 改为 file_get_contents('php://input'); 会发生什么? - bassxzero
4
看起来好像被编码了两次。 - tkausl
与之前的输出相同 {"EventTitle":"游戏","EventBody":"正文","EventDate":"2016年11月20日","EventType":"派对"} - Nadir Laskar
显示剩余2条评论
1个回答

9

看起来 @tkausl是正确的。你收到的JSON已经被双重编码了。由于它被双重编码,一个临时解决方案就是进行双重解码。

$data = json_decode(json_decode($json), true);

但真正的解决方案是找出问题产生的原因并加以修复(如果这是你需要修复的问题)。


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