代码之家  ›  专栏  ›  技术社区  ›  user2359967

json_decode和StackExchange api

  •  0
  • user2359967  · 技术社区  · 11 年前

    我正在尝试使用 V2.2 of StackExchange api 具有 PHP文件 。我正在使用 Symfony公司 与Kriswallsmith的项目 嗡嗡声 图书馆

    当我试图打印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 回复  |  直到 11 年前
        1
  •  1
  •   kix    11 年前

    我突然想到,由于某些原因,内容没有被解压缩:

    $ 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一点。

    推荐文章