Php 解析JSON时的空结果

Php 解析JSON时的空结果,php,json,stackexchange-api,Php,Json,Stackexchange Api,这是我讨厌问的问题,因为我知道答案肯定非常简单,但我似乎想不出来 我试图解析来自堆栈交换API的JSON响应,但结果是一个空字符串,尽管我检查了URL、JSON格式以及所有内容似乎都是有效的 我使用的代码很简单: $surl = file_get_contents("https://api.stackexchange.com/2.2/search?order=desc&sort=relevance&intitle=books&site=stackoverflow");

这是我讨厌问的问题,因为我知道答案肯定非常简单,但我似乎想不出来

我试图解析来自
堆栈交换API的JSON响应,但结果是一个空字符串,尽管我检查了URL、JSON格式以及所有内容似乎都是有效的

我使用的代码很简单:

$surl = file_get_contents("https://api.stackexchange.com/2.2/search?order=desc&sort=relevance&intitle=books&site=stackoverflow");

$json1 = json_decode($surl,true);

print_r($json1);
当我尝试在
json\u解码之前
echo
回显
$surl
的内容时,我得到了一个充满
字符


任何方向正确的提示都将受到欢迎。

API调用返回的字符串已被压缩

此外,所有API响应都被压缩。始终设置内容编码头,但某些代理将删除此项。在这里可以找到解码API响应的正确方法

您需要先使用解压缩字符串,然后才能在尝试时正确地
json\u decode()

$surl = file_get_contents("https://api.stackexchange.com/2.2/search?order=desc&sort=relevance&intitle=books&site=stackoverflow");

// Decode the compressed string
$surl = gzdecode($surl);

// Then you'll be able to json_decode() it...
$json1 = json_decode($surl, true);

print_r($json1);
// Prints:

Array
(
    [items] => Array
        (
            [0] => Array
                (
                    [tags] => Array
                        (
                            [0] => research
                        )

                    [owner] => Array
                        (
                            [reputation] => 9995
                            [user_id] => 1944
                            [user_type] => registered
                            [accept_rate] => 93
                            [profile_image] => https://www.gravatar.com/avatar/93fc84c261cdce2e2f1d64c8e531ecb7?s=128&d=identicon&r=PG
                            [display_name] => Charles Roper

谢谢!完全错过了。非常感谢,迈克尔