2016-07-30 27 views
1

ich aus einem SNMP-Gerät die folgende JSON habe:Wie ein Objekt von einem SNMP-Gerät iterieren und eine lesbaren Ausgabe unter Verwendung vordefinierter Regeln erstellen

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" 
     } 
    } 
] 

das Ergebnis, das ich aus der es will, ist dies:

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" ... sind nur Indizes Ich habe Informationen darüber, was in ihnen geht. Jede Eigenschaft innerhalb von ihnen nannte eine Spalte und entspricht ihrem Index.

Ich weiß folgende über die Spalten jeder Tabelle:

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 

wie kann ich ein JSON Informationsobjekt erstellen, dass ein JavaScript-Code ich über die JSON aus dem Gerät laufen kann und das Ausgabeergebnis erstellen Ich zeigte oben?

+0

wie zuverlässig sind die Schlüssel, wie '1.3.6.1.2.1.43.11.1'? –

+0

mit dem Drucker mib Ich weiß, dass 1.3.6.1.2.1.43.11.1 ist prtMarkerSuppliesTable –

Antwort

1

Sie könnten einige Hilfsvariablen für Farbe und Typ verwenden und über die Schlüssel iterieren, um ein neues Array zu erstellen.

var 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" } } }, 
 
    cols = { 3: 'color', 5: 'type', 6: 'description', 8: 'capacity', 9: 'level' }, 
 
    types = { 3: 'toner', 9: 'opc' }, 
 
    markerSupplies = mib['1.3.6.1.2.1.43.11.1'], 
 
    colors = mib['1.3.6.1.2.1.43.12.1'], 
 
    result = Object.keys(markerSupplies).map(function (k) { 
 
     var o = {}; 
 
     Object.keys(cols).forEach(function (c) { 
 
      if (c === '3') { 
 
       o[cols[c]] = (colors[k] || {})['4'] || ''; 
 
       return; 
 
      } 
 
      if (c === '5') { 
 
       o[cols[c]] = types[markerSupplies[k][c]] || ''; 
 
       return; 
 
      } 
 
      o[cols[c]] = markerSupplies[k][c] || ''; 
 

 
     }); 
 
     return o; 
 
    }); 
 

 
console.log(result);

+0

Hallo Nina! Ich bin mit dieser Antwort sehr weit gekommen und jetzt habe ich ein ähnliches Problem, das etwas anders angesprochen werden muss. Ich hoffe, du kannst helfen. http://stackoverflow.com/questions/38790637/how-to-iterate-over-an-object-and-create-an-output-using-some-rules-i-define –