javascript - 在Node-Red中解析JSON JavaScript

标签 javascript json node-red

我之前已经在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/

相关文章:

java - 获取无法编译内联过滤器: <Jsonpath with Query>

javascript - Node 红色 : lots of time to respond

javascript - onChange 不适用于 React 和 select2

javascript - 并非所有浏览器都支持 toLocaleString()?

javascript - 页面中的 anchor 链接不起作用

javascript - 如何使具有异步数据的 React 组件可在 Redux 流程中重用?

json - (Kotlin 中的 Moshi)@Json 与 @field :Json

java - 将 json 解析为 java 对象时出错 : java. lang.NullPointerException

node-red - 如何将 Node-RED 中的一根线路从一个节点移动到另一个节点?

node.js - Node 红色模块的底层代码