My JSON Array:
['"{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx5,78.xxxxxx3'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":1,'''"reciever'''":'''"+91xxxxxx'''",'''"timpestamp'''":'''"3'''"}'",'"{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx,78.xxxxx'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":2,'''"reciever'''":'''"+91xxxxx'''",'''"timpestamp'''":'''"3'''"}'"]
我正在将此 JSONArray 作为添加参数中的 POST 请求的一部分传递。
我用于显示数组内容的代码
$jsonData = stripslashes($_POST['add']);
$phpArray = json_decode($jsonData,true);
foreach ($phpArray as $index => $record)
{
echo $record["caller"];
}
我的输出只是两个开放的大括号。
{{
我无法理解出了什么问题
您的 JSON 无效,每个数组周围不应有引号。
修复生成它的内容,如果不能,下面将修复
$jsonData = stripslashes(stripslashes($jsonData));
$jsonData = str_replace(
array('"{', '}"'),
array('{', '}'),
$jsonData
);
$phpArray = json_decode($jsonData,true);
foreach ($phpArray as $index => $record)
{
echo $record["caller"];
}
虽然作为最后的手段使用,但在发送之前修复损坏的 JSON 是最佳选择。 魔术引号也从 PHP 中删除。 避免使用它
以上输出
+91xxxx+91xxxxx
你的 json 刺痛有问题。试试这个:
$post = '[{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx5,78.xxxxxx3'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":1,'''"reciever'''":'''"+91xxxxxx'''",'''"timpestamp'''":'''"3'''"},{'''"mapurl'''":'''"http:''''''/''''''/maps.google.com''''''/maps?q=17.xxxxx,78.xxxxx'''",'''"caller'''":'''"+91xxxxxx'''",'''"id'''":2,'''"reciever'''":'''"+91xxxxx'''",'''"timpestamp'''":'''"3'''"}]';
$jsonData = stripslashes(stripslashes($post));
$phpArray = json_decode($jsonData,true);
foreach ($phpArray as $index => $record)
{
echo $record["caller"];
}