PHP JSON读取对象属性

时间:2013-12-22 15:16:38

标签: php json file

我是php rogramming的初学者,我尝试从JSON字符串中获取每个PHP的一些信息。 因此我使用了:

$json = file_get_contents('data.json')
var_dump(json_decode($json));

获取有关php将如何解析我的JSON文件的更多信息。它的输出看起来像:

array(10) { 
[0]=> object(stdClass)#1 (1) { 
    ["links"]=> array(4) { 
        [0]=> object(stdClass)#2 (6) { 
            ["localIP"]=> string(14) "172.29.126.189" 
            ["remoteIP"]=> string(14) "172.29.118.193" 
            ["validityTime"]=> int(586277) 
            ["linkQuality"]=> float(1) 
            ["neighborLinkQuality"]=> float(0.396) 
            ["linkCost"]=> float(2.524) } 

        [1]=> object(stdClass)#3 (6) { 
            ["localIP"]=> string(14) "172.29.126.189" 
            ["remoteIP"]=> string(14) "172.29.149.193" 
            ["validityTime"]=> int(551339) 
            ["linkQuality"]=> float(1) 
            ["neighborLinkQuality"]=> float(0.396) 
            ["linkCost"]=> float(2.524) } } } }
...

我想知道如何能够显示例如:

  • Links [0]
  • 的“remoteIP”属性
  • 链接的所有属性[0]

感谢您的建议

1 个答案:

答案 0 :(得分:1)

每当有数组时,使用方括号来访问它的任何索引。只要有对象,就可以使用->运算符来访问它的属性。

因此,对于您的示例,它将是:

$json = file_get_contents('data.json');
$data = json_decode($json);

var_dump($data[0]->links[0]->remoteIP); // remoteIP of links[0]
var_dump($data[0]->links[0]); // All attributes of links[0], as object

另一种方式(正如Leo Bali指出的那样),让PHP将所有对象转换为数组。在这种情况下,您始终使用方括号:

$json = file_get_contents('data.json');
$data = json_decode($json, true); // Add true here as second parameter

var_dump($data[0]['links'][0]['remoteIP']); // remoteIP of links[0]
var_dump($data[0]['links'][0]); // All attributes of links[0], as array