在PHP和file_get_contents()中使用JSON访问子节点
好吧,我被难住了 我尝试过许多不同的方法,我花了好几个小时的大部分时间来寻找我的确切情况,但都无济于事,否则我会感到疲劳和失明 以下是使用文件_get_contents()从URI中提取的原始json: 正如您所看到的,这是一个非常简单的请求,我拥有除networking_v4和networking_v6中嵌套的数据之外的所有数据 我试图访问如下内容:在PHP和file_get_contents()中使用JSON访问子节点,php,json,file-get-contents,Php,Json,File Get Contents,好吧,我被难住了 我尝试过许多不同的方法,我花了好几个小时的大部分时间来寻找我的确切情况,但都无济于事,否则我会感到疲劳和失明 以下是使用文件_get_contents()从URI中提取的原始json: 正如您所看到的,这是一个非常简单的请求,我拥有除networking_v4和networking_v6中嵌套的数据之外的所有数据 我试图访问如下内容: 'ipv4' => $json->networking_v4->addr, 'ipv4dev' => $json->
'ipv4' => $json->networking_v4->addr,
'ipv4dev' => $json->networking_v4->if,
'ipv6' => $json->networking_v6->addr,
'ipv6dev' => $json->networking_v6->if,
下面是代码的完整快照:
$content = file_get_contents($url);
$json = json_decode($content);
$server_lastupd = $json->last_update;
$server_firstupd = $json->first_update;
$server = array(
'id' => $json->id,
'name' => $json->name,
'os' => $json->os,
'cputype' => $json->cpu_type,
'ipv4' => $json->networking_v4->addr,
'ipv4dev' => $json->networking_v4->if,
'ipv6' => $json->networking_v6->addr,
'ipv6dev' => $json->networking_v6->if,
'status' => $json->status,
'lastupd' => $json->$server_lastupd,
'firstupd' => $json->$server_firstupd,
'notifications' => $json->notifications_count,
'ip' => $json->ip_whois->ip,
'hostname' => $json->ip_whois->hostname,
'city' => $json->ip_whois->city,
'region' => $json->ip_whois->region,
'country' => $json->ip_whois->country,
'loc' => $json->ip_whois->loc,
'org' => $json->ip_whois->org,
'postal' => $json->ip_whois->postal,
'dctag' => $json->additonal_fields->dctag,
'source' => "XXX"
);
return $server;
因此,我的问题是,我似乎无法访问networking_v4和networking_v6中的子内容
如果能在这方面提供任何帮助,我将不胜感激。昨晚我被困了6个小时,今天又被困了几个小时,所以我放弃了,有人请给我点灯!
非常感谢:)试试
$json->networking\u v4[0]->addr
networking_v4
和networking_v6
键都指向数组,因此您需要选择要查看的索引。前者只有一个元素,因此很容易选择索引0
,但后者有多个元素,因此您需要找出所需的元素。看起来这些元素嵌套在[{“键”:“值”}、{“键”:“值”}]方括号中的数组中。您尝试过吗
ipv4 => $json->networking_v4[0]->addr,
请参阅json中的括号?
[]
?这些是数组,而不是对象。以后请查看var\u dump($json)
或print\r($json)
这就成功了!真不敢相信它会这么简单,将来还需要记住。是的,对某些人来说,它们是嵌套数组或子数组,但是,我不太明白如何访问它们,我尝试了另一种方法忘记了这个方法,不管它如何工作,您的回答非常感谢。非常感谢:)也注意到了我你自己的拼写错误更进一步!:D再次感谢@reginol\u Blindhop
ipv4 => $json->networking_v4[0]->addr,