我之前已经在C#中解析了JSON,但是这次我将在Node-Red中使用JavaScript。
我已经在网上搜索并找到了几种使用JavaScript解析JSON的解决方案,但在所有示例中,JSON都非常简单,并且其中没有很多“级别”的数据。
我将提供需要解析的JSON文件的一小部分
{
"programStatus": {
"modified_host_attributes": "1",
"modified_service_attributes": "1",
"serial_host_check_stats": "0,0,0"
},
"hosts": {
"FILANAS01": {
"host_name": "FILANAS01",
"modified_attributes": "0",
"check_command": "check-host-alive",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"FILANAS02": {
"host_name": "FILANAS02",
"modified_attributes": "0",
"check_command": "check-host-alive",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"FILANSW01": {
"host_name": "FILANSW01",
"modified_attributes": "0",
"check_command": "check-host-alive",
"scheduled_downtime_depth": "0"
},
"FILANSW02": {
"host_name": "FILANSW02",
"modified_attributes": "0",
"check_command": "check-host-alive",
"current_state": "0",
"scheduled_downtime_depth": "0"
}
},
"services": {
"FILANSW01": {
"HP ProCurve Hardware Check": {
"host_name": "FILANSW01",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"System Location": {
"host_name": "FILANSW01",
"current_state": "0",
"scheduled_downtime_depth": "0"
}
},
"FILANSW02": {
"HP ProCurve Hardware Check": {
"host_name": "FILANSW02",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"System Location": {
"host_name": "FILANSW02",
"current_state": "0",
"scheduled_downtime_depth": "0"
}
},
"FILASDC02": {
"Active Directory Domain Services": {
"host_name": "FILASDC02",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"CPU Load": {
"host_name": "FILASDC02",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"DNS Server": {
"host_name": "FILASDC02",
"current_state": "0",
"scheduled_downtime_depth": "0"
},
"Drive Space C:": {
"host_name": "FILASDC02",
"current_state": "0",
"scheduled_downtime_depth": "0"
}
}
}
}
这是从Nagios生成的,它包含服务器和交换机以及有关它们的信息。
我需要遍历所有“主机”,然后查看“ current_state”是什么,如果它是其他值,则为0,那么我将从该“主机”中获取“ host_name”和其他信息。
如果“服务”的状态不为0,则检查当前状态。
然后,我将创建一个数组,其中包含我从此JSON中获取的信息,并将其显示在信息屏幕上。
但是我需要一些帮助来开始使用JSON。
谢谢。
最佳答案
Assign the entire JSON in a JavaScript variable, complete code shown below:
`
var myJSON = {
“ programStatus”:{
“ modified_host_attributes”:“ 1”,
“ modified_service_attributes”:“ 1”,
“ serial_host_check_stats”:“ 0,0,0”
},
“主持人”:{
“ FILANAS01”:{
“ host_name”:“ FILANAS01”,
“ modified_attributes”:“ 0”,
“ check_command”:“检查主机有效”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“ FILANAS02”:{
“ host_name”:“ FILANAS02”,
“ modified_attributes”:“ 0”,
“ check_command”:“检查主机有效”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“ FILANSW01”:{
“ host_name”:“ FILANSW01”,
“ modified_attributes”:“ 0”,
“ check_command”:“检查主机有效”,
“ scheduled_downtime_depth”:“ 0”
},
“ FILANSW02”:{
“ host_name”:“ FILANSW02”,
“ modified_attributes”:“ 0”,
“ check_command”:“检查主机有效”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
}
},
“服务”: {
“ FILANSW01”:{
“ HP ProCurve硬件检查”:{
“ host_name”:“ FILANSW01”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“系统位置”:{
“ host_name”:“ FILANSW01”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
}
},
“ FILANSW02”:{
“ HP ProCurve硬件检查”:{
“ host_name”:“ FILANSW02”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“系统位置”:{
“ host_name”:“ FILANSW02”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
}
},
“ FILASDC02”:{
“ Active Directory域服务”:{
“ host_name”:“ FILASDC02”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“ CPU负载”:{
“ host_name”:“ FILASDC02”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“ DNS服务器”:{
“ host_name”:“ FILASDC02”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
},
“驱动器空间C:”:{
“ host_name”:“ FILASDC02”,
“ current_state”:“ 0”,
“ scheduled_downtime_depth”:“ 0”
}
}
}
}
Now iterate through:
var host = Object.keys(myJSON["hosts"]);
for (var i = 0; i < host.length; i++) {
var hostData = host[i];
var hostProp = myJSON.hosts[hostData];
if (hostProp.current_state != 0) {
//Do your work.
}
}
I've tested Object.keys() in a few browsers like IE9, IE10, Chrome 46
and FireFox, it works but fails in IE8.
关于javascript - 在Node-Red中解析JSON JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155225/