如何访问此 json 响应中的属性?
How to get access the properties in this json response?
我正在执行一个 curl 请求并得到一个 return 是 json 响应的响应。下面是响应发回后的代码。
响应: "Zeros Replaced real token"
{"success":true,"result":{"token":"000000000","serverTime":1471365111,"expireTime":1471365411}}1
使用的代码(用于测试)和访问 属性:
$json = json_decode($结果);
print_r($json); // 打印 Json 响应
$firsttry = $json->result['token']; //Access Property results in error :Trying to get property of non-object
$secondtry = $json['token'];
echo $firsttry.'<br>';//Code can't continue because of error from $firsttry.
print_r( $secondtry.'<br>');//Nothing Prints at all
我确实注意到了一个奇怪的异常,它在末尾打印了一个 1,就像我做的那样
json_encode($json);
return 响应将字符串末尾的那个替换为 "true"
末尾的“1 或 true”是否可以抛出 json 解码?
也许我遗漏了一些简单的东西?
作为请求的完整测试代码
$url = "https://website.com/restapi.php";
//username of the user who is to logged in.
$userName="adminuser"; //not real user
$fields_string; //global var
$fields = array( //array will have more in the future
'username' => urlencode($userName)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { global $fields_string;
$fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url.'?'.$fields_string.'operation=getchallenge');
curl_setopt($ch,CURLOPT_POST, count($fields));
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
json_decode()
,默认情况下将子对象变成 stdClass
对象而不是数组,除非它们是明确的数组。
试试这样的:
$firsttry = $json->result->token;
var_dump 显示数据类型。由于 result
本身是一个对象,因此使用 ->
而不是 []
访问其令牌
$response = '{"success":true...}'
$json = json_decode($response); //var_dumping this will show you it's an object
echo $json->result->token; // 000000000
我想通了这个问题。在卷曲选项中我没有
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
一旦我把它放在@GentelmanMax 解决方案中对我有用,但问题出在直接响应的卷曲响应中,其中 return 传输发回 php 可以使用的字符串,然后允许 json_decode() 正常运行。我知道这很简单。
我正在执行一个 curl 请求并得到一个 return 是 json 响应的响应。下面是响应发回后的代码。
响应: "Zeros Replaced real token"
{"success":true,"result":{"token":"000000000","serverTime":1471365111,"expireTime":1471365411}}1
使用的代码(用于测试)和访问 属性: $json = json_decode($结果); print_r($json); // 打印 Json 响应
$firsttry = $json->result['token']; //Access Property results in error :Trying to get property of non-object
$secondtry = $json['token'];
echo $firsttry.'<br>';//Code can't continue because of error from $firsttry.
print_r( $secondtry.'<br>');//Nothing Prints at all
我确实注意到了一个奇怪的异常,它在末尾打印了一个 1,就像我做的那样
json_encode($json);
return 响应将字符串末尾的那个替换为 "true" 末尾的“1 或 true”是否可以抛出 json 解码?
也许我遗漏了一些简单的东西?
作为请求的完整测试代码
$url = "https://website.com/restapi.php";
//username of the user who is to logged in.
$userName="adminuser"; //not real user
$fields_string; //global var
$fields = array( //array will have more in the future
'username' => urlencode($userName)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { global $fields_string;
$fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url.'?'.$fields_string.'operation=getchallenge');
curl_setopt($ch,CURLOPT_POST, count($fields));
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
json_decode()
,默认情况下将子对象变成 stdClass
对象而不是数组,除非它们是明确的数组。
试试这样的:
$firsttry = $json->result->token;
var_dump 显示数据类型。由于 result
本身是一个对象,因此使用 ->
而不是 []
$response = '{"success":true...}'
$json = json_decode($response); //var_dumping this will show you it's an object
echo $json->result->token; // 000000000
我想通了这个问题。在卷曲选项中我没有
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
一旦我把它放在@GentelmanMax 解决方案中对我有用,但问题出在直接响应的卷曲响应中,其中 return 传输发回 php 可以使用的字符串,然后允许 json_decode() 正常运行。我知道这很简单。