Laravel解码问题中的API响应

时间:2017-07-21 13:57:54

标签: php json rest laravel-5

我有以下路线:

Route::get('/verifica-dominio', function() {
$dom = Input::get('dominio');
$dominio = explode('.', Input::get('dominio'));
$name= $dominio[0];
$tld = $dominio[1];
$url =  'https://api.cloudns.net/domains/check-available.json?auth-id=1243&auth-password=KNK-dn5.&name=' . $name . '&tld[]=' . $tld;
$json = file_get_contents($url, true, stream_context_create(['socket' => ['bindto' => '0:0']]));
$j = json_decode($json);
return var_dump($j);

});

它返回此对象

object(stdClass)#1023 (1) { ["provola.com"]=> object(stdClass)#1024 (1) { ["status"]=> int(0) } }

我的代码中如何获得status = 1?

2 个答案:

答案 0 :(得分:2)

你可以使用json_decode(),它接受​​一个JSON编码的字符串并将其转换为PHP变量。

$j = json_decode($json, TRUE);
print_r($j);

和你的php部分你可以使用php数组来处理数据

这是常见的格式

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
echo "<pre>";
print_r(json_decode($json, true));

?>

,输出结果为:

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
    [d] => 4
    [e] => 5
)

了解更多信息

http://php.net/manual/en/function.json-decode.php

答案 1 :(得分:0)

TRUE作为json_decode()的第二个参数传递给它,使其将JSON解码为数组而不是对象:

$j = json_decode($json, TRUE);
print_r($j);

输出:

Array
(
    [provola.com] => Array
        (
            [status] => 0
        )
)

现在一切都变得更清晰,更容易处理。 $j['pravola.com']['status']是您正在寻找的价值。

如果不是更清楚,请阅读PHP arrays并坚持"Accessing array elements with square bracket syntax"部分。

我想密钥'pravola.com'是您在参数tld中传递给远程API的内容。如果是这种情况,那么您可以使用$j[$tld]['status']来获取所需的数据。