json_decode和StackExchange api

时间:2014-09-03 10:03:02

标签: php symfony stackexchange-api

我正在尝试将V2.2 of StackExchange api PHP 一起使用。我在Kriswallsmith的 buzz 库中使用 Symfony 项目。

当我尝试打印HTTP请求及其编码的响应内容时出现问题。我已经在StackOverflow中阅读了很多与此问题相关的问题,但问题仍然存在。

这是我展示问题的代码的一部分:

echo "The url: ";
var_dump($url);
var_dump($response);
$content = $response->getContent();
echo "Json decode's content: ";
var_dump(json_decode($content, true));
echo "The error is";
switch(json_last_error()) {
    case JSON_ERROR_DEPTH:
        echo ' - Maximum stack depth exceeded';
        break;
    case JSON_ERROR_CTRL_CHAR:
        echo ' - Unexpected control character found';
        break;
    case JSON_ERROR_SYNTAX:
        echo ' - Syntax error, malformed JSON';
        break;
    case JSON_ERROR_STATE_MISMATCH:
        echo ' - Invalid or malformed JSON';
        break;
    case JSON_ERROR_UTF8:
        echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
        break;
}

die();

返回以下内容:

enter image description here

如果您粘贴

https://api.stackexchange.com/2.2/answers?site=stackoverflow&sort=activity&

在浏览器中,它返回一个有效的JSON。

1 个答案:

答案 0 :(得分:1)

我发现由于某种原因,内容未被解压缩:

$ curl https://api.stackexchange.com/2.2/answers
�VJ-*�/��LQ�210ЁrsS���S����3KR2��R
                                  K3�RS�`J�sA�I�)��E@NIj�R-g��PP

$ curl https://api.stackexchange.com/2.2/answers | gzip -d
{"error_id":400,"error_message":"site is required","error_name":"bad_parameter"}

您应该能够使用PHP的gzuncompress功能或稍微挖掘Buzz。