david aitwan: Json und http_request

Hey Leute,

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

mein JS sieht ungefähr so aus:

function alertContent() {
 if (http_request.readyState == 4) {
 var data = http_request.responseText;
 var i,y;
 var json = Array();
 json = eval('('+data+')');

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])
   }
  }
  if (x["43D43"] != null ) {
   for (i=0;i<x["43D43"].length;i++){
    machetwas mit (x["43D43"][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)!!

Gruß David

  1. 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