file_get_contents json解码不显示任何内容

时间:2018-08-23 12:57:06

标签: php json api jsondecoder jsonencoder

我正在为我的网站使用google站点验证recaptcha API。

$json = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$response."&remoteip=".$ip);

当我打印echo $json;时,它显示正确的响应

{ "success": true, "challenge_ts": "2018-08-23T12:43:42Z", "hostname": "staging.my.com" }

但是当我尝试

$data = json_decode($json,true);  echo $data->success;

它什么也没显示

有人可以告诉我我在想什么吗?

2 个答案:

答案 0 :(得分:1)

$json = '{ "success": true, "challenge_ts": "2018-08-23T12:43:42Z", "hostname": "staging.my.com" }';
$data = json_decode($json,true);

这将从示例JSON字符串而不是对象(用于var_dump($data);来查看您实际存储的内容)中生成一个关联数组。 只需使用正确的语法访问数组值即可:

echo $data["success"]; // prints '1'

或:

echo ($data["success"])?'success':'failure'; // prints 'success'

答案 1 :(得分:0)

根据PHP文档,如果将第二个参数assoc设置为true,则该函数将返回关联数组而不是std类。

 mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
  

关联

     

为TRUE时,返回的对象将转换为关联数组。

因此,请尝试$data['success']或将json_decode($json, true)更改为json_decode($json)