Don P: Json und http_request

Beitrag lesen

Hallo David,

Durch einen Http_request bekomme ich per json daten zurück - zb
{"34D34":[6947,7084,7211,7387,7514,7640,7767,7893,8020,8146,8273,8399,8526,8657,8784,8910,9037,9240,9367,9493,9620,9746,9873,4999,5126,5252,5378,5505]},{"43D43":[5632,5759,5886,6012,6139,6265,6391,6518,6645,6772,6898,7025,7151,7277,7404,7562,6476,6616,6804,7031,7238,7368,7551,7758,7965,8173,8380,8507]}

Also ein Objekt mit einer Eigenschaft namens '34D34'.

mein JS sieht ungefähr so aus:

»»

function alertContent() {
if (http_request.readyState == 4) {
var data = http_request.responseText;
var i,y;

// das  ist völlig unnötig:

var json = Array();

// da "json" sofort wieder ein ganz anderes Objekt zugewiesen bekommt:

json = eval('('+data+')');

mit den Beispieldaten oben ist json jetzt kein Array, sondern ein normales Objekt ohne length-Eigenschaft, so dass for... nicht wie folgt funktionieren kann:

for (y=0;y<json.length;y++) {
  x = json[y];
  if (x["34D34"] != null ) {
   for (i=0;i<x["34D34"].length;i++){
    machetwas mit (x["34D34"][i])
   }
  }

Jetzt meine Frage: Kann ich vom Objectname auch anders erfahren???
die " if (x["34D34"] != null )" Abfrage finde ich  unschön(besonders bei vielen Objs)!!

if (x["34D34"] != null ) {...} macht keinen Sinn. Entweder einfach if (x["34D34"]) {...} oder if (x["34D34"] !== null ) {...}

Zu deinem eigentlichen Problem: Da "json" in deinem Beispiel ein normales Objekt wird (kein Array-Objekt), kann man seine Eigenschaften/Methoden nur so durchlaufen:

for (var y in json) {...}

y wird dabei nacheinander auf "34D34" und die anderen Eigenschaften/Methoden gesetzt (falls vorhanden, in deinen Beispieldaten findet sich ja nur eine einzige Eigenschaft, die als Wert ein Array enthält).

Hope it helps.

Gruß, Don P