Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析红色节点中的JSON javascript_Javascript_Json_Node Red - Fatal编程技术网

解析红色节点中的JSON javascript

解析红色节点中的JSON javascript,javascript,json,node-red,Javascript,Json,Node Red,我以前在C#中解析过JSON,但这次我将在Node Red中使用JavaScript。 我搜索了web,找到了几种用JavaScript解析JSON的解决方案,但在所有示例中,JSON都非常简单,其中没有多少“级别”数据 我将提供需要解析的JSON文件的一小部分 { "programStatus": { "modified_host_attributes": "1", "modified_service_attributes": "1", "serial_host_check_stats": "

我以前在C#中解析过JSON,但这次我将在Node Red中使用JavaScript。 我搜索了web,找到了几种用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生成的,它包含服务器和交换机以及关于它们的信息。 我需要遍历所有“主机”并查看“当前_状态”是什么,如果是其他状态,则为0,然后我将从该“主机”获取“主机名”和一些其他信息

“服务”中的相同内容检查当前状态(如果不是0)

然后,我将使用从这个JSON获取的信息创建一个数组,并将其显示在信息屏幕上

但是我需要一些帮助来开始使用JSON。 谢谢

` var myJSON={ “程序状态”:{ “修改的主机属性”:“1”, “修改的_服务_属性”:“1”, “串行主机检查统计信息”:“0,0,0” }, “主持人”:{ “FILANAS01”:{ “主机名”:“FILANAS01”, “修改的_属性”:“0”, “检查命令”:“检查主机是否处于活动状态”, “当前状态”:“0”, 计划停机时间深度:“0” }, “FILANAS02”:{ “主机名”:“FILANAS02”, “修改的_属性”:“0”, “检查命令”:“检查主机是否处于活动状态”, “当前状态”:“0”, 计划停机时间深度:“0” }, “FILANSW01”:{ “主机名”:“FILANSW01”, “修改的_属性”:“0”, “检查命令”:“检查主机是否处于活动状态”, 计划停机时间深度:“0” }, “FILANSW02”:{ “主机名”:“FILANSW02”, “修改的_属性”:“0”, “检查命令”:“检查主机是否处于活动状态”, “当前状态”:“0”, 计划停机时间深度:“0” } }, “服务”:{ “FILANSW01”:{ “HP ProCurve硬件检查”:{ “主机名”:“FILANSW01”, “当前状态”:“0”, 计划停机时间深度:“0” }, “系统位置”:{ “主机名”:“FILANSW01”, “当前状态”:“0”, 计划停机时间深度:“0” } }, “FILANSW02”:{ “HP ProCurve硬件检查”:{ “主机名”:“FILANSW02”, “当前状态”:“0”, 计划停机时间深度:“0” }, “系统位置”:{ “主机名”:“FILANSW02”, “当前状态”:“0”, 计划停机时间深度:“0” } }, “FILASDC02”:{ “Active Directory域服务”:{ “主机名”:“FILASDC02”, “当前状态”:“0”, 计划停机时间深度:“0” }, “CPU负载”:{ “主机名”:“FILASDC02”, “当前状态”:“0”, 计划停机时间深度:“0” }, “DNS服务器”:{ “主机名”:“FILASDC02”, “当前状态”:“0”, 计划停机时间深度:“0” }, “驱动器空间C:”:{ “主机名”:“FILASDC02”, “当前状态”:“0”, 计划停机时间深度:“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.    
现在迭代:
var host=Object.keys(myJSON[“hosts”]);
对于(var i=0;i
JSON.parse(yourJsonData)应该已经足够了,但是您的数据是一个庞大的javascript对象,可能是一个对象数组。如果不知道
键,就不可能在
主机上循环。如果
主机
服务
阵列
,那就很容易了,非常感谢您的回复。这是我在尝试此代码时收到的错误消息:Object.keys(myJSON[“hosts”]);^在非Object上调用Object.keys该错误表明您已将myJSON设置为原始JSON字符串。您需要首先将其解析为一个对象:
var myJSON=JSON.parse(myJSONString)
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.