json解码返回空数组

时间:2016-08-18 05:23:15

标签: php arrays json

我正在尝试从API检索数组,但每次尝试后都返回一个空数组。

这是我从api获取数据的编码:

<?php
$array=array("name"=>"name1");

$url = "http://getsjobs.esy.es/registerapi.php?".http_build_query($array);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$json = curl_exec($ch);
curl_close($ch);

$data = json_decode($json,true);

if (is_array(json_decode($data )) || is_object(json_decode($data)))
{ echo 'array exists'; }
else { echo 'Not an array'; }

?>

这是我的api代码

  <?php
if(isset($_GET['Array'])) {
    $array = $_GET['Array'];
    header('Content-type: application/json');
}

?>

即使我使用json_encode($array)。它返回空数组。我可以接收单值或单数组元素,但不能发送和接收整个 来自json的数组。

我无法找到任何相关的帖子。任何链接或建议都会有所帮助

2 个答案:

答案 0 :(得分:0)

我的PHP很生疏,但我认为这个问题是因为你的API正在寻找一个名为“Array”的参数,但是在你的调用块中没有它实际发送一个名为“Array”的GET参数。

你的代码看起来有点不完整,所以也许我误解了一些东西。

答案 1 :(得分:0)

看这里:你要解码两次。

ArrayBuffer

简单地说:

$data = json_decode($json,true);

if (is_array(json_decode($data )) || is_object(json_decode($data)))
{ echo 'array exists'; }
else { echo 'Not an array'; }

如果仍然不起作用,请查看$data = json_decode($json,true); if (is_array($data )) { echo 'array exists'; } else { echo 'Not an array'; } 返回的内容。 尝试检查您的echo json_last_error_msg();是否也是有效的json。检查$json返回的内容在此处是否有效:http://jsonformatter.curiousconcept.com/