PHP json_decode不起作用

时间:2013-05-30 05:31:49

标签: php json

我正在尝试以下代码来接收JSON。但是,解码不会产生结果。它适用于带有转义斜杠的相同字符串的副本。

<?php
$input = file_get_contents('php://input');
logToFile("post.txt",$input);
#Output: {"id":"id1","model":"model1","version":"v1","software":["s1","s2","s3"]}

$data = json_decode($input,true);
logToFile("post.txt",$data['version']);
#Output:Empty result

### Works
$data1 = json_decode("{\"id\":\"id1\",\"model\":\"model1\",\"version\":\"v1\",\"software\":[\"s1\",\"s2\",\"s3\"]}",true);
logToFile("post.txt",$data1['version']);
#Output:v1

function logToFile($filename,$msg)
{
  $fd=fopen($filename,"a");
  $str="[".date("Y/m/d h:i:s")."]".$msg;
  fwrite($fd,$str."\n");
  fclose($fd);
}
?>

我使用的是PHP 5.4。因此,它不是魔术引号中的问题。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

我认为问题不在于json_decode。

$input = '{"id":"id1","model":"model1","version":"v1","software":["s1","s2","s3"]}';
$data = json_decode($input,true);
echo $data['version'];

工作正常。

所以,如果你去:

echo "<pre>";
print_r( $input );
echo "</pre>";

从文件中获取$输入后。看起来好吗?