API响应未被识别为JSON

时间:2017-12-22 21:48:25

标签: php json api

我正在构建一个基于第三方API的应用程序,该API以JSON格式(或应该)提供数据。

代码段:

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.test,com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/json",
  "X-API-KEY: *",
  "X-API-SECRET: *"
));

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

var_dump()命令表明$ response变量是一个字符串,而不是JSON。

我已经浏览了各种堆栈交换帖子,了解如何将字符串清理成JSON,striplashes,删除不可见的十六进制字符等,但似乎没有任何工作。

当我将其粘贴到JSON验证工具中时,它表示一切正常。

2个问题:

  1. 我在代码中遗漏了哪些东西导致这是一个字符串而不是JSON?我之前使用过的API和那些刚刚开箱即用的API ......
  2. 由于这是第三方API,修正此情况的修复(如果需要)可能需要很长时间。是否有一个脚本可用于将此字符串转换为JSON或数组对象以使其可用?
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

是的,HTTP响应总是字符串。你必须明确地对它们进行类型转换:

$response = json_decode($response);
var_dump($response);

如果您希望将其作为数组而不是对象,请将第二个参数设置为true

$response = json_decode($response, true);
var_dump($response);