使用PHP和JS从URL解析JSON
问题描述:
我收到来自URL(这是芹菜的插件)的数据的json。示例:使用PHP和JS从URL解析JSON
{
"[email protected]": {
"scheduled": [],
"stats": {
"clock": "2535550",
"pid": 26002,
"broker": {
"transport_options": {},
"login_method": "AMQPLAIN",
"hostname": "127.0.0.1",
"alternates": []
},
"prefetch_count": 8,
"total": {
"stone": 2602,
"wood": 34
}...
我尝试解析它并使用PHP和JS自定义统计页面。
用PHP解析:
<?php
$url = 'http://127.0.0.1:5555/api/workers';
$content = file_get_contents($url);
$json = json_decode($content, true);
foreach($json['[email protected]']['stats']['total'] as $item) {
echo json_encode($item['wood']);
}
?>
和JS从PHP脚本与更新计时器获取数据:
function getFromFile() {
$.get("s_updater.php",function(response) {
response = JSON.parse(response);
console.log(response)
$("#field-1").html(response);
});
}
$(document).ready(function() {
var period = 1000;
getFromFile();
var per = setInterval(function() {
getFromFile();
}, period);
});
但是看起来,我犯了一个错误的地方,现在我卡住了。有没有更好的方法来做到这一点? 我想要的只是从URL的json中获取“wood”:34,并在html页面上显示值。
答
$json = json_decode($content, true);
echo $json['[email protected]']['stats']['total']['wood'];
您不必使用循环或JSON发送一个值就可以回显它。
JS代码
function getFromFile() {
$.get("s_updater.php",function(response) {
console.log(response)
$("#field-1").html(response);
});
}
答
TL; DR为了获得木材价值,你就需要通过$json['[email protected]']['stats']['total']['wood']
当你迭代$json['[email protected]']['stats']['total']
你会得到两个$item
s到访问它,但这些项目是整数,而不是数组:2602为石头,34为木头。 PHP应该注意到这一点。
对其进行可视化一些,如果你做
foreach($json['[email protected]']['stats']['total'] as $key => $item) {
echo $key.': '.$item;
}
你会得到:
stone: 2602
wood: 31
为了让你只会做$json['[email protected]']['stats']['total']['wood']
木材值,并将其作为JSON或输出为若干解码。当你将它作为数字回显时,不要指望JS端的json。
+0
谢谢你的帮助! –
请从'console.log'输出更明确的答案 –
对不起,我摆脱了大部分东西,忘记删除逗号。我在问题中编辑了JSON。 Console.log显示: 'SyntaxError:JSON解析错误:无法识别的令牌'
@SamBronson你想从PHP服务器获得一个键值对吗? –