JSON-String Verständnis

Noeden

Erfahrenes Mitglied
Hallo,
ich habe mich heut mit dem JSON-String befasst und dachte ihn verstanden zu haben. Folgenden String will ich per eval in ein Objekt verwandeln und per AJAX auf Reisen schicken.

Ich möchte per Post folgende Daten empfangen:

Code:
$_POST['titel'] = 'Ein Titel';
$_POST['dat_typ'] = 'Dat';

//n ist nur eine fortlaufende Zahl
$_POST['ref'][n][x][y] = 'Ein Titel';

folgenden String logge ich im Moment in meiner Konsole, bekomme aber ienen Fehler angezeigt

Code:
({"titel":"", "text":"Hier bin ich", "dat_typ":"doc", "ref_baum": ["0":["0":"1"], "1":["0":"2"]]})

Ärgert macht Ref. Habe "ref": geschrieben um so darauf zuzugreifen. Dann eckige Klammern um alles für ein Array und dann jeweils n ein Array zugewiesen mit x und y (hier 0/1, 0/2 und 0/3)

Folgende Fehlermeldung bekomme ich, kann sie aber nicht nachvollziehen, da jede öffnende Klammer eine schließende hat

missing ] after element list


Danke :(
 
Das ist kein gültiges Array:

Javascript:
["0":["0":"1"], "1":["0":"2"]]

Doppelpunkte haben in einem Array nichts zu suchen. Wenn das Objekte sein sollen, müssen die auch alle geschweifte Klammern haben. Aber ich glaube du willst es einfach so haben.

Javascript:
[[["1"]], [["2"]]]

Die "0" und die "1" die du da hattest ergibt sich doch aus der Position im Array, da brauchst du keinen extra Schlüssel für.
 
Also wäre mein Code von oben so korrekt? (Ich brauch die 0 und die 1 und die 0 und die 2)

Code:
({"titel":"", "text":"Hier bin ich", "dat_typ":"doc", "ref_baum": [["0"["1"]], ["0"["2"]]]})

Und dann wäre

Code:
$_POST['ref_baum'][0] = 0;
$_POST[0][$_POST['ref_baum'][0]] = 1;

Wenn das so ist, habe ich es verstanden :)

DANKE DANKE DANKE
 
Ich befürchte nein. Das hier ist auch kein gültiges Array

Javascript:
[["0"["1"]], ["0"["2"]]]

Jetzt mal Schritt für Schritt

Wenn das hier gelten soll
Code:
$_POST['ref_baum'][0] = 0;

Müsste das so aussehen (Ein eindimensionales Array, das an erster (nullter) Stelle eine Null stehen hat)

Javascript:
{"ref_baum": [0]}


Aber das hier ergibt für mich wieder keinen Sinn.
Code:
$_POST[0][$_POST['ref_baum'][0]] = 1;

Was soll denn "$_POST[0]" sein?


Und mal generell, wieso überhaupt $_POST? Du könntest das JSON doch einfach in ein PHP Objekt umwandeln. http://php.net/manual/en/function.json-decode.php



Vielleicht erläuterst du nochmal genau was du vor hast.
 
Also ganz von vorne.

ich habe drei Variablen, die ich an ein PHP-Skript übergeben möchte und dann noch eine unbestimmte Anzahl an zueinandergehörigen Zahlenpaaren. (also x1->y1, x2->y2, ...)

Dann wollte ich die per post übertragen und dann kann ich doch die Post-Variable $_POST['ref_baum'] in ein objekt umwandeln oder?

Bei dem Zitat hatt ich was vergessen, so sollte es aussehen (Ohne Umwandlung)
Code:
$_POST['ref_baum'][n] = x1;
$_POST['ref_baum'][n][x1] = y1; //n ist einfach fortlaufend

Hmm sorry, dass ich etwas begriffsstutzig bin.

Btw: Welchen Vorteil hat das Umwandeln des JSON in ein php-Objekt, anstatt, dass ich das so per POST-Variable mache. Oder geht das gar nicht :D Konnte das noch nicht ausprobieren, weil der das nicht schicken wollte. Sorry :(
 
Also im Prinzip hat das was du vor hast also überhaupt nichts mit JSON zu tun. Die "normalen" Werte kannst du ja so übertragen

Code:
titel=&text=Hier%20bin%20ich&dat_typ=doc

Bleiben noch die Zuordnungen. Die könntest du auch einfach mit einem Bindestrich trennen. Z.B. 0->1

Code:
ref_baum=0-1

Mehrere könntest du so ähnlich machen.
0->1
5->99
Code:
ref_baum=0-1,5-99


Wieso willst du jetzt JSON benutzen? Bei der Zuordnung könnte man sich das noch überlegen, dann wäre das aber

Code:
{
    "0":"1",
    "5":"99"
}

bzw. in der URL

Code:
ref_baum=%7B%220%22%3A%221%22%2C%225%22%3A%2299%22%7D
 
Weil ich dachte, dass das elegant wäre und damit ich mich mal mit JSON beschäftige :D

Du willst das also per GET verschicken, ist das richtig?

Hmm ich mach mir mal Gedacnken darüber

Danke
 
Sooo, ich melde mich aus dem Urlaub zurück ;)

Bin leider im Moment noch ein wenige Begriffsstutzig.

Also bis jetzt habe ich AJAX so gehandhabt (per Post)

Code:
$.post("empfaenger.php", {titel:"test",text:"blindtext"}, function(data){
   alert(data);
});

Was dann ja titel=test&text=blindtext entspricht. Und jetzt soll ich noch einen String konkatenieren mit x1-y1,x2-y2,x3-y3

Und den genauso verschicken und mir im PHP-Code wieder aufdröseln?Ich wollte dann direkt alles in ein JSON-Objekt packen, wenn ich die Zuweisung bei den x-y schon damit löse. Um nur eine Verbindung zu haben. Was dagegen spricht verstehe ich leider immernoch nicht. Wohl hoffnungslos! Hast Du vielleicht einen Link der mir weiterhilft?Ich werde es jetzt aber erstmal so machen wie Du gesagt hast!!

Danke
 
Zurück