Php 为什么json#U解码不';你不为我工作吗?

Php 为什么json#U解码不';你不为我工作吗?,php,json,Php,Json,我有点困惑。如果我将一个变量传递给json_decode,它将不起作用: $stringJSON = $_GET['jsonstring']; echo $stringJSON; $stringObject = json_decode($stringJSON); var_export($stringObject); 第一个回音正确地向我显示了我传递的JSON字符串,例如 {\"Items\":[{\"Name\":\"name\",\"Description\":\"\"],\"Name\

我有点困惑。如果我将一个变量传递给json_decode,它将不起作用:

$stringJSON = $_GET['jsonstring'];  
echo $stringJSON;
$stringObject = json_decode($stringJSON);
var_export($stringObject);
第一个回音正确地向我显示了我传递的JSON字符串,例如

{\"Items\":[{\"Name\":\"name\",\"Description\":\"\"],\"Name\":\"Christmas\"}
第二个回音显示NULL。 因此,我从第一个echo中获取字符串并编写以下代码:

$stringObject = json_decode("{\"Items\":[{\"Name\":\"name\",\"Description\":\"\"],\"Name\":\"Christmas\"}");
var_export ($stringObject);

你说呢,它向我展示了正确解码的数组。字符串完全相同,我甚至保留了转义字符。或者它们可能是问题所在?

如果在您回送它时,它显示一个带有斜杠的字符串,则表示该字符串中有斜杠。这不是一个有效的JSON字符串,斜杠不属于这里。如果将该字符串粘贴到PHP中,则斜杠将由PHP计算。PHP源代码中的字符串literal
“\”
的计算结果为字符串
,因此斜杠被有效删除,您正在解码有效的JSON字符串


我怀疑您在将斜杠插入GET值的服务器上,请将其关闭。

看起来您的服务器启用了
magic\u quotes\u gpc
。或者在使用它之前通过
stripslashes()
运行
$stringJSON

$stringJSON = get_magic_quotes_gpc() ?
    stripslashes($_GET['jsonstring']) : $_GET['jsonstring'];
这个

需要

[{\"Name\":\"name\",\"Description\":\"\"}]

您缺少结束语
}

这是一个引用问题:请尝试以下操作

$stringObject = json_decode("{\"Items\":[{\"Name\":\"name\",\"Description\":\"\"],\"Name\":\"Christmas\"}");
echo $stringObject;
var_export ($stringObject);
如您所见,$stringObject没有引号(但是来自$\u GET的有引号)

所以你可能需要

$stringJSON = $_GET['jsonstring'];  
$stringObject = json_decode(stripslashes($stringJSON));
var_export($stringObject);
运行json_解码两次

$str = json_decode($jsonData,true);
$str = json_decode($str,true);
它可能会帮助某人

json_encode($str, JSON_UNESCAPED_SLASHES);

它可能会帮助您。

如果内容包含UTF编码的文本,它将中断内容,因为它将被删除too@aokaddaoc你当然是对的。最好的选择是禁用魔法报价我不知道为什么。。。但它确实对我有用:)
json_encode($str, JSON_UNESCAPED_SLASHES);