2012-04-10 7 views
0

Ich habe eine JSON-Datei, die mehr Namen Wert Paare hat, als ich eingeben möchte. Entweder faul oder elegant. Anstatt zu verwenden, was ich unten habe, wo ich alle Namenswerte-Paare eintippen muss, muss eine Eigenschaft von val wie val.name vorhanden sein, um nicht alle anderen Paare austippen zu müssen. Was ist die richtige Terminologie zu suchen, um die Antwort zu finden? oder der Code wäre zu schön :)javascript each - autodetect Name von val in (Schlüssel, val)

Dies ist, was ich mit begann, als ich dachte: „Mist, ich habe, dass alle * # eingeben & @ $ out!“

$.each(data, function(key, val) { 
      items.push(key + val.TimeStamp + val.bandwidth +); 

JSON

{ 
    "Router": "HS-DSCS1", 
    "router_data": [ 
     { 
      "TimeStamp": "2012/01/01 06:00:00", 
      "NeighborIP": "192.168.1.1", 
      "State": "Full", 
      "Bytes001": "21362.95663", 
      "Bytes002": "2.67 KB", 
      "Bytes003": "9887.99707", 
      "Bytes004": "1.24 KB", 
      "Bytes005": "Serial0/1/0" 
     } 
    ] 
} 
+0

Was ist Ihre Frage? Die Iteration über Daten oder die über val? – Bergi

+1

Huh? Ihr Codebeispiel ist _bereits_ über das Objekt "data" iterativ. Warum können Sie also nicht dasselbe für "val" tun? – nnnnnn

+0

Ich möchte alle Eigenschaften des Objekts in das Objekt pushen, ohne val.TimeStamp, val.BandWidth usw. eingeben zu müssen. Das scheint der lange Weg zu sein, ein Objekt aus einem JSON-Array (Daten) – rd42

Antwort

2

Scheint so, als ob Sie nur String-Verkettung machen. Wenn ja ...

$.each(data, function(key, val) { 
    items.push(key + $.map(val, String).join('')); 
}); 

DEMO:http://jsfiddle.net/ZVDcy/


Oder wenn Sie ein neues Array erstellen, könnten Sie dies tun ...

var items = $.map(data, function(val, key) { 
    return key + $.map(val, String).join(''); 
}); 

DEMO:http://jsfiddle.net/ZVDcy/1/

+0

Ich habe versucht, alle Spalten aus dem JSON zu überprüfen, indem ich alert (items.join ('\ n')); aber nur die ersten Werte sehen. Gibt es eine bessere Möglichkeit, den Inhalt eines Arrays auf der Konsole auszudrucken, um zu überprüfen, was hineingeht? – rd42

+0

Die Browser-Konsole sollte Ihnen genau zeigen, was Sie bekommen. Sind 'Daten' tiefer verschachtelt als nur eine Ebene? Können Sie Ihre Datenstruktur in Ihrer Frage zeigen? –

+0

Ich habe es zu der Frage hinzugefügt. – rd42

2

Wenn ich Ihre Frage richtig zu verstehen, nur for..in verwenden.

for (field in val){ 
    // something with val[field] 
}