如何将JSON字符串转换为PHP变量?

时间:2017-08-31 05:57:51

标签: php json curl

我试图使用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);



?>

4 个答案:

答案 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'];

more info about json_decode

答案 3 :(得分:0)

json_decode将JSON字符串解码为多维数组 你得到那个错误,因为PHP对象不是数组 只需访问[]即可,

$obj['user']['field_requested']