json_encode是否会添加其他引号?

时间:2011-05-28 00:43:30

标签: php json

http://codepad.org/zmsXbqhu

我有非常简单的代码(可在上面查看):

<?php
$js = json_encode( "HO" );
var_dump( $js );
?>

它返回一个带有额外引号的字符串:

  

string(4)“”HO“”

知道为什么会这样吗?

4 个答案:

答案 0 :(得分:5)

因为你是var_dump'ing。它将它包含在引号中。如果你没有var_dump和echo,你会看到实际的字符串。

在这里,看一下:

http://codepad.viper-7.com/KB5Fkk

代码

 <?php

$js = json_encode( '{ book : "how to use json", author: "some clever guy" }' );
var_dump( $js );

echo "<br /> The actual string:<br />";
echo $js;
?>

输出:

string(61) ""{ book : \"how to use json\", author: \"some clever guy\" }"" 
The actual string:
"{ book : \"how to use json\", author: \"some clever guy\" }"

答案 1 :(得分:2)

在JSON中......

  

string 是零个或多个Unicode字符的序列,用双引号括起来,使用反斜杠转义。

source

答案 2 :(得分:1)

如果你这样做:

$json = json_encode("HO");
echo $json;

它将返回以下内容:

"HO"

您的代码返回类似内容的原因:

string(4) ""HO""

是您使用的var_dump(),不能作为echo的替代品进行处理(请参阅var_dump() documentation)。

答案 3 :(得分:0)

因为字符串的JSON表示用引号括起来。您编码了一个字符串,这就是它在JSON中的表示方式。