在PHP中解码JSON无法访问密钥

时间:2013-09-17 06:08:39

标签: php decode json

我有JSON结果:

[ { "_id" : { "$oid" : "5237d438e4b07666dcca4896"} , 
    "username" : "user" , "password" : "asdf"} ]

从GET请求返回。我试图解码这个结果,我似乎无法访问用户名或密码密钥。这就是我试过的:

$obj = json_decode($result[0]);
echo $obj->username;

然而,它似乎每次都返回整个结果(数组)。

4 个答案:

答案 0 :(得分:1)

尝试使用它:

$json = json_decode($result);
echo $json[0]->username;

完整示例:

<?php
header('Content-Type: text/plain; charset=utf-8');

$result = '[ { "_id" : { "$oid" : "5237d438e4b07666dcca4896"} , 
    "username" : "user" , "password" : "asdf"} ]';

$json = json_decode($result);
echo $json[0]->username;
?>

结果:

user

答案 1 :(得分:1)

$result = '[ { "_id" : { "$oid" : "5237d438e4b07666dcca4896"} , 
    "username" : "user" , "password" : "asdf"} ]';
$obj = json_decode($result);
var_dump($obj);
/**
 * Array containg object. So now $obj is just an array
 * 
array (size=1)
  0 => 
    object(stdClass)[1]
      public '_id' => 
        object(stdClass)[2]
          public '$oid' => string '5237d438e4b07666dcca4896' (length=24)
      public 'username' => string 'user' (length=4)
      public 'password' => string 'asdf' (length=4)
 * 
 * 
 * Key 0 contains object properties _id; username; password
 * 

 */

echo $obj[0]->username;  // user

答案 2 :(得分:1)

如果你向json_decode添加第二个参数boolan true 像

$obj = json_decode($result[0], true);

然后你将获得关联数组而不是对象。

可以通过

等键访问值
echo $obj['username'];

答案 3 :(得分:0)

是的,你是对的json_decode函数返回一个数组。您需要从该数组中获取值。在上述情况下,您需要获取如下的用户名:

echo $json_encode[0]->username;;

取决于你的json。

You can refer this link: