JSON-Auswertung eines zweidimensionalen Arrays, das ein Objekt beinhaltet

Thomas D

Erfahrenes Mitglied
Hallo!

Weiß zufällig jemand von euch, wie im mittels JSON folgenden String auswerten kann:

[['index': '0', 'promotion': ''}, {'index': '1', 'promotion': 'WWE'}], [{'index': '0', 'promotion': '', 'event': ''}, {'index': '1'}, 'promotion': '1', 'event: 'SummerSlam'}]]

Ich möchte also ein Array schaffen, das 2 Array enthält. Das erste (Promotionarray) beinhaltet Objekte mit 2 Variablen (Index und Promotionbezeichnung), das zweite (Eventarray) beinhaltet Objekte mit 3 Variablen (Index, Promotionid, Eventbezeichnung). Es sieht also wie folgt aus:

[0]
{
[0] (0, '')
[1] (1, 'WWE')
[2] (2, 'TNA')
[3] (3, 'ROH')
}
[1]
{
[0] (0, 0, '')
[1] (1, 1, 'Backlash')
[2] (2, 1, 'Judgmentday')
[3] (3, 1, 'Vengeance')
[4] (4, 1, 'Unforgiven')
}

Normalerweise werte ich solche Strings mit einer Dimension weniger mit folgender Anweisung aus:

Code:
var auswertung = new Array ();
auswertung = http.responseText;
auswertung = eval (+"(" + auswertung +")");

Mit der obigen Auswertung wird der String zu einem Array zusammengebaut. Nun stellt sich mir die Frage, wie sich das auf obige Problemstellung mit einer Dimension mehr lösen lässt. Die für mich logische Anweisung

Code:
auswertung = eval (+"((" + auswertung +"))");

machte nämlich rein gar nichts und behielt den String im ursprünglichen Zustand gleich. Ich bin für jeden Hinweis dankbar :) ...

MfG, Thomas D.
 
Hi,

Dein String ist fehlerhaft. Mit folgendem Kostrukt funktioniert es bei mir:
Code:
[[{'index': '0', 'promotion': ''}, {'index': '1', 'promotion': 'WWE'}], [{'index': '0', 'promotion': '', 'event': ''}, {'index': '1', 'promotion': '1', 'event': 'SummerSlam'}]]
Ciao
Quaese
 
Geht leider noch immer nicht ...

Hallo!

Danke für den Hinweis, aber die Auswertung funktioniert bei mir noch immer nicht. Der String sieht nun wie folgt aus:

[[{'index': '0', 'promotion': ''}, {'index':'1', 'promotion': 'WWE'},{'index':'2', 'promotion': 'TNA'}], [{'index': '0', 'promotion': '', 'event': ''}]]

Nach dem Aufruf von eval () bleibt der String unbehandelt - d.h. es kommt zwar zu keinem Absturz des Scripts, allerdings tut es immer noch nicht, was ich will. Hat es bei dir dann eigentlich auch funktioniert und wenn ja, mit welchem Code?

MfG, Thomas D.
 
Hi,

folgendes Beispiel
Code:
<script type="text/javascript">
  <!--
var strHelp = "[[{'index': '0', 'promotion': ''}, {'index': '1', 'promotion': 'WWE'}], [{'index': '0', 'promotion': '', 'event': ''}, {'index': '1', 'promotion': '1', 'event': 'SummerSlam'}]]";

var arrHelp = eval("("+strHelp+")");

alert(arrHelp[1][1]['event']);
 //-->
</script>
liefert richtigerweise "SummerSlam".

Ciao
Quaese
 
Thx, erledigt!

Aua, ich Riesenhirsch! Ich habe zwar alles richtig umgewandelt, dann aber nicht zugewiesen :-(; d.h. ich habe

Code:
eval ("(" +promEvent +")");

anstelle von

Code:
promEvent = eval ("(" +promEvent +")");

geschrieben. Kein Wunder, dass die Variable danach weiterhin ein String war :rolleyes: ... Noch einmal vielen Dank für deine Hilfe :)!

MfG, Thomas D.
 

Neue Beiträge

Zurück