我收到一个带有来自URL的数据的json(这是芹菜的插件)。样品:
{
"celery@s1": {
"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['celery@s1']['stats']['total'] as $item) {
echo json_encode($item['wood']);
}
?>
使用更新计时器从PHP脚本获取数据的JS:
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);
});
但看起来我在某个地方犯了错误,现在我被卡住了。有没有更好的方法来做到这一点? 我想要的只是获得“wood”:来自URL的json的34,并在html页面上显示值。
答案 0 :(得分:1)
$json = json_decode($content, true);
echo $json['celery@s1']['stats']['total']['wood'];
您不必使用循环或JSON来发送单个值,只需回显它。
JS代码
function getFromFile() {
$.get("s_updater.php",function(response) {
console.log(response)
$("#field-1").html(response);
});
}
答案 1 :(得分:1)
TL; DR要获得木材价值,您需要通过$json['celery@s1']['stats']['total']['wood']
当您迭代$json['celery@s1']['stats']['total']
时,您将获得两个$item
,但这些项目是整数,而不是数组:2602用于石头,34用于木材。 PHP应该注意到你。
如果你做了
,可以更多地想象它foreach($json['celery@s1']['stats']['total'] as $key => $item) {
echo $key.': '.$item;
}
你会得到:
石头:2602 木材:31
要获得木材价值,您只需执行$json['celery@s1']['stats']['total']['wood']
并将其解码为json或将其输出为数字。当你把它作为数字回应时,不要指望JS方面的json。