首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将json数据放入包含@属性的php变量中

如何将json数据放入包含@属性的php变量中
EN

Stack Overflow用户
提问于 2015-10-30 08:43:21
回答 3查看 163关注 0票数 0

我一直在努力从apis中获取数组。不知道为什么我不能把我的头绕在他们头上。

这一次,我似乎无法访问密钥和结果。

我使用curl来获取json数组结果。然而,我似乎无法正确地访问它们。我一直收到php错误警告:非法字符串偏移量。显然我没有访问正确的密钥。

我试着用这种方式对它们进行解码、编码和访问,但没有结果。

我已经阅读了很多关于这里和其他地方的问题,只是无法让它起作用。

我的代码是:

代码语言:javascript
复制
<?php
$url="http://localhost/geeks/monitor/xml.php?plugin=complete&jsonp&callback=getData";
//  Initiate curl
$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$url);
// Execute
$resultjson=curl_exec($ch);
// Closing
curl_close($ch);

$array = json_decode(json_encode($resultjson), true);
print_r($array);
?>

它返回以下内容:

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* getData({"Generation":{"@attributes":{"version":"3.2.x","timestamp":"1446194411"}},"Options":{"@attributes":{"tempFormat":"c","byteFormat":"auto_binary","refresh":"60000","threshold":"90","showPickListTemplate":"true","showPickListLang":"true","showCPUListExpanded":"true","showCPUInfoExpanded":"false"}},"Vitals":{"@attributes":{"Hostname":"domain.domain.com","IPAddr":"127.1.1.1","Kernel":"2.6.18-404.el5 (SMP) x86_64","Distro":"CentOS release 5.11 (Final)","Distroicon":"CentOS.png","Uptime":"778721.78","Users":"0","LoadAvg":"0.82 0.83 0.81","SysLang":"English United States (en_US)","CodePage":"UTF-8","Processes":"616","ProcessesRunning":"3","ProcessesSleeping":"611","ProcessesZombie":"2","OS":"Linux"}},"Network":{"NetDevice":[{"@attributes":{"Name":"lo","RxBytes":"20523255371","TxBytes":"20523255371","Err":"0","Drops":"0","Info":"127.0.0.1"}},{"@attributes":{"Name":"eth0","RxBytes":"32510645609","TxBytes":"337131806000","Err":"0","Drops":"0","Info":"00-0C-29-7A-BB-86;202.130.34.3"}},{"@attributes":{"Name":"eth1","RxBytes":"4076707540","TxBytes":"278070","Err":"0","Drops":"0","Info":"00-0C-29-7A-BB-90"}}]},"Hardware":{"@attributes":{"Name":"VMware, Inc. VMware Virtual Platform\/440BX Desktop Reference Platform, BIOS 6.00 07\/30\/2013"},"PCI":{"Device":[{"@attributes":{"Name":"Host bridge: Intel Corporation 440BX\/ZX\/DX - 82443BX\/ZX\/DX Host bridge","Count":"1"}},{"@attributes":{"Name":"PCI bridge: Intel Corporation 440BX\/ZX\/DX - 82443BX\/ZX\/DX AGP bridge","Count":"1"}},{"@attributes":{"Name":"ISA bridge: Intel Corporation 82371AB\/EB\/MB PIIX4 ISA","Count":"1"}},{"@attributes":{"Name":"IDE interface: Intel Corporation 82371AB\/EB\/MB PIIX4 IDE","Count":"1"}},{"@attributes":{"Name":"Bridge: Intel Corporation 82371AB\/EB\/MB PIIX4 ACPI","Count":"1"}},{"@attributes":{"Name":"System peripheral: VMware Virtual Machine Communication Interface","Count":"1"}},{"@attributes":{"Name":"VGA compatible controller: VMware SVGA II Adapter","Count":"1"}},{"@attributes":{"Name":"SCSI storage controller: LSI Logic \/ Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI","Count":"1"}},{"@attributes":{"Name":"PCI bridge: VMware PCI bridge","Count":"1"}},{"@attributes":{"Name":"PCI bridge: VMware PCI Express Root Port","Count":"32"}},{"@attributes":{"Name":"Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller","Count":"1"}},{"@attributes":{"Name":"Ethernet controller: VMware VMXNET3 Ethernet Controller","Count":"1"}}]},"IDE":{"Device":{"@attributes":{"Name":"hdc: VMware Virtual IDE CDROM Drive","Count":"1"}}},"SCSI":{"Device":{"@attributes":{"Name":"VMware Virtual disk (Direct-Access)","Count":"1"}}},"CPU":{"CpuCore":[{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}},{"@attributes":{"Model":"Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz","CpuSpeed":"2100.000","Cache":"15728640","Bogomips":"4200.00"}}]}},"Memory":{"@attributes":{"Free":"60383232","Used":"15709798400","Total":"15770181632","Percent":"100"},"Details":{"@attributes":{"App":"4206075904","AppPercent":"27","Buffers":"864247808","BuffersPercent":"6","Cached":"10639474688","CachedPercent":"67"}},"Swap":{"@attributes":{"Free":"6190227456","Used":"50888704","Total":"6241116160","Percent":"1"},"Mount":{"@attributes":{"MountPointID":"1","FSType":"","Name":"SWAP","Free":"6190227456","Used":"50888704","Total":"6241116160","Percent":"1","MountPoint":"\/dev\/mapper\/VolGroup00-LogVol01"}}}},"FileSystem":{"Mount":[{"@attributes":{"MountPointID":"1","FSType":"ext3","Name":"\/dev\/mapper\/VolGroup00-LogVol00","Free":"77318148096","Used":"666516889600","Total":"784311173120","Percent":"85","MountOptions":"rw, usrjquota=quota.user, jqfmt=vfsv0","Inodes":"3","MountPoint":"\/"}},{"@attributes":{"MountPointID":"2","FSType":"ext3","Name":"\/dev\/sda1","Free":"70255616","Used":"27912192","Total":"103512064","Percent":"27","MountOptions":"rw","Inodes":"1","MountPoint":"\/boot"}},{"@attributes":{"MountPointID":"3","FSType":"tmpfs","Name":"tmpfs","Free":"7885090816","Used":"0","Total":"7885090816","Percent":"0","MountOptions":"rw","Inodes":"1","MountPoint":"\/dev\/shm"}}]},"MBInfo":{},"UPSInfo":{},"Plugins":{},"Errors":{}})
*/

正如你所看到的,它不打印“友好”。所以,如果有人知道怎样才能让印刷品更容易读懂,那就太好了。然而,问题仍未解决。

因此,我如何访问其中的每一个,并将每个变量放入php变量。

我尝试了很多不同的方法,我显然没有正确选择钥匙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-30 11:05:52

哇哦!最后得到了它。从零开始并更改为file_get_contents。

然后,我抓起它,宣布utf8,并删除了它的垃圾。

然后,我确保我声明了json_decode为真,因此它将正确地放在一个数组中。

现在我可以很容易地获得我所需要的东西。下面是我的最后一段代码,列出了所有的数组,也是一个只访问我所需内容(版本)的示例:

代码语言:javascript
复制
<?php
$url="http://localhost/monitor/xml.php?plugin=complete&json&callback=getData";
$html = file_get_contents($url);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($html));

$json = json_decode($json, true);

echo '<p>Version : '.$json['Generation']['@attributes']['version'].'';

print_r($json);
?>
票数 0
EN

Stack Overflow用户

发布于 2015-10-30 08:57:11

你可以这样读你的儿子:

代码语言:javascript
复制
$array['Generation']['@attributes']['version']

o/p => 3.2.x您可以在http://jsonlint.com/以适当的方式阅读您的json

票数 1
EN

Stack Overflow用户

发布于 2015-10-30 09:00:13

json_decode($json,真);

代码语言:javascript
复制
Array
(
    [Generation] => Array
        (
            [@attributes] => Array
                (
                    [version] => 3.2.x
                    [timestamp] => 1446194411
                )

        )

回波攻击

代码语言:javascript
复制
  echo $array["Generation"]["@attributes"]["timestamp"];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33431791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档