Javascript 如何从SNMP设备迭代对象并使用预定义规则创建可读输出

Javascript 如何从SNMP设备迭代对象并使用预定义规则创建可读输出,javascript,node.js,snmp,mib,Javascript,Node.js,Snmp,Mib,我从SNMP设备中获得了以下JSON: mib = [ "1.3.6.1.2.1.43.11.1": { "1.1": { "3": "1", "5": "3", "6": "Cyan Toner Cartridge, WorkCentre 6505N", "8": "2000", "9": "800" }, "1.2":

我从SNMP设备中获得了以下JSON:

mib = [
    "1.3.6.1.2.1.43.11.1": {
        "1.1": {
            "3": "1",
            "5": "3",
            "6": "Cyan Toner Cartridge, WorkCentre 6505N",
            "8": "2000",
            "9": "800"
        },
        "1.2": {
            "3": "2",
            "5": "3",
            "6": "Magenta Toner Cartridge, WorkCentre 6505N",
            "8": "1000",
            "9": "400"
        },
        "1.5": {
            "3": "0",
            "5": "9",
            "6": "Imaging Unit, WorkCentre 6505N",
            "8": "24000",
            "9": "24000"
        }
    },
    "1.3.6.1.2.1.43.12.1": {
        "1.1": {
            "4": "cyan"
        },
        "1.2": {
            "4": "magenta"
        }
    }
]
我想要的结果是:

device["markerSupplies"]: [
    0: {
        color: "cyan",
        type: "toner",
        description: "Cyan Toner Cartridge, WorkCentre 6505N",
        capacity: "2000",
        value: "800"
    },
    1: {
        color: "magenta",
        type: "toner",
        description: "Magenta Toner Cartridge, WorkCentre 6505N",
        capacity: "1000",
        value: "400"
    },
    2: {
        color: "",
        type: "opc",
        description: "Imaging Unit, WorkCentre 6505N",
        capacity: "24000",
        value: "24000"
    },
]
“1.1”、“1.2”。。。只是索引,我有关于它们内部的信息。 其中的每个属性都称为列,并与其索引相对应

我对每个表的列了解如下:

1.3.6.1.2.1.43.11.1
    3   the color index inside 1.3.6.1.2.1.43.12.1
    5
        3   "toner"
        9   "opc"
    6   description
    8   capacity
    9   level

1.3.6.1.2.1.43.12.1
    4   color name
如何创建一个JSON信息对象,使用javascript代码可以从设备上迭代JSON
创建我上面显示的输出结果?

您可以使用一些颜色和类型的辅助变量,并迭代键来构建新数组

var-mib={“1.3.6.1.2.1.43.11.1”:{“1.1”:{3:“1”,5:“3”,6:“青色碳粉盒,工作中心6505N”,8:“2000”,9:“800”},“1.2:{3:“2”,5:“3”,6:“洋红碳粉盒,工作中心6505N”,8:“1000”,9:“400”},“1.5:{3:“0”,5:“5:“成像单元,工作中心6505N”,8:“24000”,9:“0”},“1.12.1:{“1.1:{4:“青色”},“1.2:{4:“洋红”}},
cols={3:'颜色',5:'类型',6:'描述',8:'容量',9:'级别'},
类型={3:'碳粉',9:'opc'},
markerSupplies=mib['1.3.6.1.2.1.43.11.1'],
颜色=mib['1.3.6.1.2.1.43.12.1'],
结果=Object.keys(markerSupplies).map(函数(k){
var o={};
Object.keys(cols).forEach(函数(c){
如果(c=='3'){
o[cols[c]=(颜色[k]||{})[4']| |'';
返回;
}
如果(c=='5'){
o[cols[c]]=types[markerSupplies[k][c]]||‘;
返回;
}
o[cols[c]]=markerSupplies[k][c]|;
});
返回o;
});

console.log(result);
这些键有多可靠,比如
1.3.6.1.2.1.43.11.1
?使用打印机mib,我知道1.3.6.1.2.1.43.11.1是prtMarkerSuppliesTableHi Nina!我对这个答案了解得很透彻,现在我有一个类似的问题需要以稍微不同的方式解决,希望你能帮助。