如何使用PHP从cURL获取json

时间:2017-01-05 19:41:20

标签: php json curl

我正在尝试使用php解析cURL对json的影响:

$url = 'https://www.toto.com/api/v1/ads/?apikey=titi&code_postal='.$code_postal.'&type_de_bois='.$type_bois;
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Accept: application/json'
));

$result = curl_exec($cURL);
curl_close($cURL);

var_dump(json_decode($result, true));
echo json_decode($result);

这让我觉得,这似乎是json:

  

[{ “ID”: “6918”, “NOM”: “X”, “code_postal”: “88120”, “威乐”: “镇”, “说明”: “测试”, “标识”:” test.png”, “URL”: “测试”, “电话”:真正},   [{ “ID”: “6919”, “NOM”: “Y”, “code_postal”: “88121”, “威乐”: “town1”, “描述”: “测试”, “标识”:“test.png ”, “URL”: “测试”, “电话”:真正},   [{ “ID”: “6920”, “NOM”: “Z”, “code_postal”: “88122”, “威乐”: “town2”, “描述”: “测试”, “标识”:“test.png ”, “URL”: “测试”, “电话”:真}]

     

int(1)1

我的问题是: - 为什么在没有回声或打印的情况下打印阵列? - 为什么json_decode不能正常工作或为什么只有一个值(“1”)?

非常感谢您的回答。

2 个答案:

答案 0 :(得分:3)

您忘记使用CURLOPT_RETURNTRANSFER选项。因此,curl_exec()打印了响应,而不是将其返回到$result,而$result只包含TRUE返回的值curl_exec,表示它已成功。添加:

curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

答案 1 :(得分:0)

如果在使用一次json_decode()后,json数据似乎被编码了两次,结果就是一个json字符串。

请检查:

echo json_decode(json_decode($result));

如果它不起作用,你能否提供

的回复
echo $result; 

查看PHP未解析的服务器响应。