我试图使用cURL解析来自url的json数据,然后使用json_decode来访问对象,但是我失败了。我已经搜索了如何访问但我失败了。
这是我访问过的链接,希望我能解决问题。
http://www.dyn-web.com/tutorials/php-js/json/decode.php
https://stackoverflow.com/questions/12429029/php-get-values-from-json-encode
https://stackoverflow.com/questions/20193575/fetch-json-data-using-php
https://stackoverflow.com/questions/12429029/php-get-values-from-json-encode
https://stackoverflow.com/questions/4433951/decoding-json-after-sending-using-php-curl
这是var_dump($ obj);
的结果array(1) {
["login"]=>
array(2) {
["error"]=>
bool(false)
["user"]=>
array(5) {
["br_code"]=>
int(0)
["mem_id"]=>
int(202)
["username"]=>
string(8) "johndoe"
["email"]=>
string(33) "johndoe@gmail.com"
["created_at"]=>
string(19) "2017-08-07 15:35:39"
}
}
}
这是我的PHP代码
<?php
session_start();
$ch = curl_init('http://localhost/sample/login.php');
$username= $_SESSION["USERNAME"];
$password= $_SESSION["PASSWORD"];
$credentials = [
'username' => $username,
'password' => $password
];
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $credentials);
curl_setopt($ch, CURLOPT_USERNAME, "{$username}:{$password}");
// execute!
$response = curl_exec($ch);
// close the connection
curl_close($ch);
$obj= json_decode($response, true);
// echo $obj; // Notice: Array to string conversion in
// echo $obj[0]; // Undefined offset
// echo $obj->user; //Trying to get property of non-object in
var_dump($obj);
?>
答案 0 :(得分:3)
似乎是一个数组数组
例如:for username
var_dump($obj['login']['user']['username']);
等等其他值
$my_username = $obj['login']['user']['username']);
答案 1 :(得分:1)
您的数据位于login
数组中,因此请尝试按照以获取用户
$user = $obj['login']['user'];
//to print email
echo $user['email'];
//to print username
echo $user['username'];
//so on
答案 2 :(得分:1)
当你执行json_decode($ response,true),并且你使用第二个参数为true时,它会将它解码为关联数组。
你的var_dump也说它是数组。因此,您需要访问$ obj作为数组而不是对象
如果要访问用户数组:
$obj['login']['user']
如果您想访问用户名/ br_code:
$obj['login']['user']['username'];
$obj['login']['user']['br_code'];
答案 3 :(得分:0)
json_decode
将JSON字符串解码为多维数组
你得到那个错误,因为PHP对象不是数组
只需访问[]
即可,
$obj['user']['field_requested']