我有这个JSON对象:
$json = '{
"droplet":{
"id":3286068,
"name":"some.domain.com",
"memory":512,
"vcpus":1,
"disk":20,
"locked":false,
"status":"active",
"kernel":{
"id":377,
"name":"CentOS 6.5 x64 vmlinuz-2.6.32-431.1.2.0.1.el6.x86_64",
"version":"2.6.32-431.1.2.0.1.el6.x86_64"
},
"created_at":"2014-11-25T19:54:41Z",
"features":[
"virtio"
],
"backup_ids":[
],
"next_backup_window":null,
"snapshot_ids":[
8724513
],
"image":{
"id":8385856,
"name":"rr1.2",
"distribution":"CentOS",
"slug":null,
"public":false,
"regions":[
"nyc2",
"nyc2"
],
"created_at":"2014-12-25T19:09:02Z",
"min_disk_size":20
},
"size_slug":"512mb",
"networks":{
"v4":[
{
"ip_address":"104.131.211.202",
"netmask":"255.255.224.0",
"gateway":"104.131.192.1",
"type":"public"
}
],
"v6":[
]
},
"region":{
"name":"New York 2",
"slug":"nyc2",
"sizes":[
],
"features":[
"virtio",
"private_networking",
"backups"
],
"available":null
}
}
}';
我可以运行:
$arr = json_decode($json);
echo "{$arr->droplet->id}";
并回显id就好了。但是我一直在尝试2个小时来回显JSON对象中更深的ip_address ...
我该如何回显ip_address而仅回显ip_address?
附言:请不要告诉我如何使用正则表达式。我可以那样做。我想学习如何以回显“ id”的相同方式回显“ ip_address”。
您只需要更深入地研究JSON对象。如果您这样做:
echo $arr->droplet->networks->v4[0]->ip_address;
它输出:
104.131.211.202
至于解释JSON的详细信息,请考虑每个“ {”或“ [”带您更深入地了解结构,而每个“,”在当前级别上都是水平的。这意味着id与network平行,而我们想要的是在network下面,因此我们改为指向它。按照网络内部的相同模式,我们进入v4,它是一个数组。数组中的位置通过包含索引的方括号引用。因为我们想要第一个位置,所以我们使用[0]。最后,ip_address在我们当前的级别上,因此我们可以在这里指向它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句