1

我有 JSON 结果:

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

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

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

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

4

4 回答 4

2

如果您向 json_decode 添加第二个参数 boolan true ,例如

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

然后你会得到关联数组而不是对象。

并且可以通过键访问值,例如

echo $obj['username'];
于 2013-09-17T06:33:30.953 回答
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
于 2013-09-17T06:13:47.023 回答
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
于 2013-09-17T06:14:52.220 回答
0

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

echo $json_encode[0]->username;;

取决于你的json。

你可以参考这个链接:

于 2013-09-17T06:14:32.777 回答