来自网址的JSON代码:
{
"response": {
"members": [
{
"memberid": "123456"
}
]
}
}
如果我使用此代码提取单个值,则不会列出任何内容,为什么?
$json_url = file_get_contents("http://example.com/json");
$json = json_decode($json_url, true);
echo $json->response->members->memberid;
但是当我试着写这个......
print_r($json['response']);
......所以会得到这个......
Array ( [members] => Array ( [0] => Array ( [memberid] => 123456 ) ) )
我做错了什么?
答案 0 :(得分:3)
属性members
是一个数组而不是一个对象。事实上,因为你使用json_decode()
和第二个参数,所有$json
都是一个关联数组,而不是一个对象。
尝试:
echo $json['response']['members'][0]['memberid'];
答案 1 :(得分:3)
您将json响应解码为数组,因此您必须像这样访问它:
$json_url = file_get_contents("http://example.com/json");
$json = json_decode($json_url, true);
echo $json['response']['members']['memberid'];
或者您可以将其解码为对象:json_decode($json);
(删除true
),允许您将其作为对象引用 - $json->response->member->memberid
答案 2 :(得分:2)
如果要将数组值作为对象,则应使用此代码将数组转换为对象:
$json =json_decode($json_url, true);
$json=(object)$json;
答案 3 :(得分:1)
按原样,您应该可以通过
访问它$json['response']['members'][0]['memberid']