Json und http_request
david aitwan
- javascript
0 Don P
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
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